我跟踪看了一下TEXT宏,大概是这么定义的
#define TEXT(x) L ## x
int main()
{
char * buffer="asdf";
printf("%s",TEXT(buffer));
}
cl -E xxx 展开宏后是 printf("%s",buffer);为什么不是printf("%s",Lbuffer);啊????
#define TEXT(x) L ## x
int main()
{
char * buffer="asdf";
printf("%s",TEXT(buffer));
}
cl -E xxx 展开宏后是 printf("%s",buffer);为什么不是printf("%s",Lbuffer);啊????
你对TEXT宏的理解有错误对于TEXT宏,如果未定义_UNICODE,则TEXT的定义为空,所以就是你所看到的那样,是buffer而不是lbuffer
如果定义了_UNICODE,你这个代码就问题大了,根本不可能通过编译
而此时 L 是一个保留的用来定义 Unicode 字符串操作符