Xcode和预处理器##

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)