Вопрос по странным макросам define

VeD
Offline
Зарегистрирован: 21.02.2016

Подскажите пожалуйста, как читать такие строки кода?
#define MSB(word) (BYTE)(((WORD)(word) >> 8) & 0xff)

#define XVAL(addr) (*( __xdata volatile unsigned char *)(addr))
И где почитать учебник о таком извращении?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

VeD пишет:
где почитать учебник о таком извращении?

У Кернигана и Ритчи в главе про препроцессор. 

VeD
Offline
Зарегистрирован: 21.02.2016

Короче, то что BYTE и WORD это
typedef unsigned char BYTE
typedef unsigned short WORD
То есть unsigned short word сдвигается на 8, потом данное выражение сравнивается по и с 0xff и это все преобразуется в unsigned char.
Верно?

sadman41
Offline
Зарегистрирован: 19.10.2016

Нет, не сравнивается. См. "Bitwise Operators".

VeD
Offline
Зарегистрирован: 21.02.2016

Ну это мне так проще понять, что сравниваются. 00101 и 0110=00100. Я не знаю как это называется, всегда думал, что сравнивается и вычисляется

VeD
Offline
Зарегистрирован: 21.02.2016

А вот как понять второй пример, интересно. Такое чувство что переменная написанная наоборот _xdata volatile unsigned char

VeD
Offline
Зарегистрирован: 21.02.2016

Погуглил. _xdata это указание что переменная должна храниться во внешней флеш памяти.

VeD
Offline
Зарегистрирован: 21.02.2016

Хорошо. С xdata понятно все. Это типа из области ОЗУ, но зачем написано именно __xdata, а не xdata?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

VeD пишет:
Верно?
Вам сказали почитать, а не гадать на кофейной гуще. Так читайте!

Зачем спрашивать совета, если не него тут же плевать?

VeD
Offline
Зарегистрирован: 21.02.2016

Так совет то я принял и прочитал. Только это не гадание, а размышление

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

VeD пишет:
прочитал
Простите, не заметил.

VeD
Offline
Зарегистрирован: 21.02.2016

Я вот в скобках путаюсь, не могу понять, в какой последовательности их читать

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

VeD пишет:
Я вот в скобках путаюсь, не могу понять, в какой последовательности их читать

Вот здесь есть про скобки со всеми необходимыми пояснениями.

VeD
Offline
Зарегистрирован: 21.02.2016

Понял. Я думал там особенный алгоритм

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

ЕвгенийП пишет:

VeD пишет:
Я вот в скобках путаюсь, не могу понять, в какой последовательности их читать

Вот здесь есть про скобки со всеми необходимыми пояснениями.

Ну ёмаё! Я ж поперхнулся ночным чаем! Ещё и заржал как конь! Ну нельзя же так... Ну как так вообще возможно, это не по человечески...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

BOOM пишет:
Ну нельзя же так...
А что? Там недостаточно понятно про скобки?

Domosed
Offline
Зарегистрирован: 15.07.2019

ЕвгенийП пишет:
А что? Там недостаточно понятно про скобки?

Гы-гы-гы, ха-ха-ха, ой-ой-ой, фуух.. Спасибо Евгений, подняли настроение, заодно слезовые протоки пробило. - Наши помощники, заяц и волк.. - Шедеврально. Ой..гы-гы-гы..

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

ЕвгенийП пишет:

BOOM пишет:
Ну нельзя же так...
А что? Там недостаточно понятно про скобки?

Да нет, скорее наоборот)) Потому и заржал в голос )))