gcc预处理##问题

在vc中

#define FOO(A) &##A
#define FOO(A) *##A
#define FOO(A) someclass.##A

都是正确的但是到了gcc会报pasting xxx and xxx does not give a valid preprocessing token

解决方法是去掉##直接连接:

#define FOO(A) &A
#define FOO(A) *A
#define FOO(A) someclass.A

对于gcc遇到& * .等符号它将会自动的尝试与后面的token连接,因此不要多此一举的使用##符号。
另外你想看到gcc预处理后的结果可以使用-E选项

gcc -E xxx.c
#对于c++
g++ -E xxx.cc

Comments

Popular posts from this blog

socket close shutdown函数区别

批量在文件头插入

hash表取模技巧