Chr*_*ton 2 xcode preprocessor
在Xcode中,我可以在宏中使用##吗?
在MSVC中我可以写:
#define FOO(_var) int foo##_var## = 1
FOO(bar);
foobar++;
Run Code Online (Sandbox Code Playgroud)
在Mac上(编辑:用GCC编译)相同的代码给我错误"粘贴"foobar"和"="没有给出有效的预处理令牌.在xcode中不支持##吗?
Nic*_*ley 10
GCC和Clang支持连接.Xcode不是编译器; 如果您发布这样的错误,请检查您正在使用的GCC,LLVM-GCC或Clang("LLVM编译器")的版本,因为它们的行为可能不同.
你试图=创建一个标识符的一部分(即创建一个名为的变量foobar=),我认为这不是你想要的.
试试吧#define FOO(_var) int foo##_var = 1.
顺便说一句,Clang提供了一个更好的错误消息:
foo.c:4:5: error: pasting formed 'foobar=', an invalid preprocessing token
FOO(bar);
^
foo.c:1:32: note: instantiated from:
#define FOO(_var) int foo##_var## = 1
^
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6877 次 |
| 最近记录: |