Вопрос по странным макросам define
- Войдите на сайт для отправки комментариев
Пнд, 27/07/2020 - 06:30
Подскажите пожалуйста, как читать такие строки кода?
#define MSB(word) (BYTE)(((WORD)(word) >> 8) & 0xff)
#define XVAL(addr) (*( __xdata volatile unsigned char *)(addr))
И где почитать учебник о таком извращении?
У Кернигана и Ритчи в главе про препроцессор.
Короче, то что BYTE и WORD это
typedef unsigned char BYTE
typedef unsigned short WORD
То есть unsigned short word сдвигается на 8, потом данное выражение сравнивается по и с 0xff и это все преобразуется в unsigned char.
Верно?
Нет, не сравнивается. См. "Bitwise Operators".
Ну это мне так проще понять, что сравниваются. 00101 и 0110=00100. Я не знаю как это называется, всегда думал, что сравнивается и вычисляется
А вот как понять второй пример, интересно. Такое чувство что переменная написанная наоборот _xdata volatile unsigned char
Погуглил. _xdata это указание что переменная должна храниться во внешней флеш памяти.
Хорошо. С xdata понятно все. Это типа из области ОЗУ, но зачем написано именно __xdata, а не xdata?
Зачем спрашивать совета, если не него тут же плевать?
Так совет то я принял и прочитал. Только это не гадание, а размышление
Я вот в скобках путаюсь, не могу понять, в какой последовательности их читать
Вот здесь есть про скобки со всеми необходимыми пояснениями.
Понял. Я думал там особенный алгоритм
Вот здесь есть про скобки со всеми необходимыми пояснениями.
Ну ёмаё! Я ж поперхнулся ночным чаем! Ещё и заржал как конь! Ну нельзя же так... Ну как так вообще возможно, это не по человечески...
Гы-гы-гы, ха-ха-ха, ой-ой-ой, фуух.. Спасибо Евгений, подняли настроение, заодно слезовые протоки пробило. - Наши помощники, заяц и волк.. - Шедеврально. Ой..гы-гы-гы..
Да нет, скорее наоборот)) Потому и заржал в голос )))