Ответ 1
Здесь воспроизводится препроцессорC. После того, как код предварительно обработан, это выглядит так.
char *ptr = (char *)&9987;
адрес оператора (&
) может применяться к переменной, а не к литералу.
У меня есть следующие строки кода:
#define PORT 9987
и
char *ptr = (char *)&PORT;
Это похоже на мой код сервера. Но по мере того как я написал его в моем клиентском коде, он дает это сообщение об ошибке:
lvalue required as unary ‘&’ operand
Что я делаю неправильно?
C. После того, как код предварительно обработан, это выглядит так.
char *ptr = (char *)&9987;
адрес оператора (&
) может применяться к переменной, а не к литералу.
Макросы препроцессора не имеют памяти, а во время компиляции макрос заменяется значением. Так что актуальная вещь здесь char *ptr = (char *)&9987
;, что невозможно.