Подтвердить что ты не робот

Lvalue, требуемое как унарный '& операнд

У меня есть следующие строки кода:

#define PORT 9987

и

char *ptr = (char *)&PORT;

Это похоже на мой код сервера. Но по мере того как я написал его в моем клиентском коде, он дает это сообщение об ошибке:

lvalue required as unary ‘&’ operand

Что я делаю неправильно?

4b9b3361

Ответ 1

Здесь воспроизводится препроцессор

C. После того, как код предварительно обработан, это выглядит так.

char *ptr = (char *)&9987;

адрес оператора (&) может применяться к переменной, а не к литералу.

Ответ 2

Макросы препроцессора не имеют памяти, а во время компиляции макрос заменяется значением. Так что актуальная вещь здесь char *ptr = (char *)&9987;, что невозможно.