我有以下几行代码:
#define PORT 9987
和
char *ptr = (char *)&PORT;
这似乎适用于我的服务器代码。但是当我在客户端代码中编写它时,它会显示以下错误消息:
lvalue required as unary ‘&’ operand
我做错了什么?
答案 0 :(得分:29)
C预处理器在这里发挥作用。在对代码进行预处理之后,就会出现这种情况。
char *ptr = (char *)&9987;
(&
)运算符的地址可以应用于变量而不是文字。
答案 1 :(得分:6)
预处理器宏没有内存,在编译时宏被替换为值。所以这里发生的实际事情是char *ptr = (char *)&9987
;,这是不可能的。