左值作为一元'&'操作数

时间:2013-05-24 03:47:22

标签: c pointers

我有以下几行代码:

#define PORT 9987

char *ptr = (char *)&PORT;

这似乎适用于我的服务器代码。但是当我在客户端代码中编写它时,它会显示以下错误消息:

lvalue required as unary ‘&’ operand

我做错了什么?

2 个答案:

答案 0 :(得分:29)

C预处理器在这里发挥作用。在对代码进行预处理之后,就会出现这种情况。

char *ptr = (char *)&9987;

&)运算符的地址可以应用于变量而不是文字。

答案 1 :(得分:6)

预处理器宏没有内存,在编译时宏被替换为值。所以这里发生的实际事情是char *ptr = (char *)&9987;,这是不可能的。