我跟踪看了一下TEXT宏,大概是这么定义的
#define TEXT(x) L ## x
int main()
{
   char * buffer="asdf";
   printf("%s",TEXT(buffer));
}
cl -E xxx  展开宏后是   printf("%s",buffer);为什么不是printf("%s",Lbuffer);啊????

解决方案 »

  1.   

    你这个用法一开始就错了
    你对TEXT宏的理解有错误对于TEXT宏,如果未定义_UNICODE,则TEXT的定义为空,所以就是你所看到的那样,是buffer而不是lbuffer
    如果定义了_UNICODE,你这个代码就问题大了,根本不可能通过编译
      

  2.   

    注意 L ## x,中间 ## 是有空格的所以是 L  buffer
    而此时 L 是一个保留的用来定义 Unicode 字符串操作符
      

  3.   

    有没有定义_UNICODE啊,不定义的话TEXT不会起作用的拉
      

  4.   

    ## 是连字符,中间可以没有空格的吧。L"vzcxv"这样不可以嘛?