开发者

Xcode & preprocessor ##

In Xcode can I use ## in a macro?

In MSVC I can write:

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

    FOO(b开发者_如何转开发ar);
    foobar++;

On the Mac (edit: compiling with GCC) the same code gives me the error "Pasting "foobar" and "=" does not give a valid preprocessing token. Is ## not supported in xcode?


Concatenation is supported in GCC and Clang. Xcode isn't a compiler; if you're posting errors like this, check what version of GCC, LLVM-GCC or Clang ("LLVM compiler") you're using because their behavior can differ.

You're trying to make = part of an identifier (i.e., create a variable called foobar=) which I don't think is what you want.

Try #define FOO(_var) int foo##_var = 1 instead.

Incidentally, Clang gives a somewhat better error message:

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
                               ^
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜