Xcode&预处理器##

时间:2010-12-08 03:36:07

标签: xcode preprocessor

在Xcode中,我可以在宏中使用##吗?

在MSVC中我可以写:

#define FOO(_var) int foo##_var## = 1

    FOO(bar);
    foobar++;

在Mac上(编辑:使用GCC编译),相同的代码给出了错误“粘贴”foobar“和”=“没有给出有效的预处理令牌。##不支持xcode的?

1 个答案:

答案 0 :(得分: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
                               ^