Не думаю, что LOBYTE
- это какая-то переменная, в которой вы можете получить некоторое значение. Это MACRO
, который возвращает само значение. В EFFET вы пишете что-то simmilar к [после предварительной обработки]
5 = 2 * 3
, которые не возможно. Вам понадобится доступная для записи память на LHS задания =
оператор.
В вашем случае возможной реализации LOBYTE
является #define LOBYTE(x) ((unsigned char) ((x) & 0xff))
, что не является lvalue
. Вот почему ошибка есть.
EDIT:
Что касается «как решить» часть [извините за пропуск в первый ответ], вы должны предоставить именующее выражение как результат LoByte.
Просто, чтобы добавить к ответу ouah «s, вы можете сделать что-то сделать, как
#define LOBYTE(x) (*(uint8_t *) &(x))
для получения требуемого именующего выражения.
Как мы могли бы узнать, что такое 'LOBYTE'? –
В частности, он может быть наименее значимыми битами v9 или байтом с наименьшим адресом. В системах с большими концами они находятся на противоположных концах. – MSalters