我有以下几行代码:
#define PORT 9987
Run Code Online (Sandbox Code Playgroud)
和
char *ptr = (char *)&PORT;
Run Code Online (Sandbox Code Playgroud)
这似乎适用于我的服务器代码.但是当我在我的客户端代码中编写它时,它会给出以下错误消息:
lvalue required as unary ‘&’ operand
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
Laz*_*abs 31
C预处理器在这里发挥作用.在对代码进行预处理之后,这就是它的样子.
char *ptr = (char *)&9987;
Run Code Online (Sandbox Code Playgroud)
(&)运算符的地址可以应用于变量而不是文字.
小智 6
预处理器宏没有内存,在编译时宏被替换为值.所以这里char *ptr = (char *)&9987真正发生的事情是,这是不可能的.