开发者

Xcode & preprocessor ##

开发者 https://www.devze.com 2023-01-29 15:20 出处:网络
In Xcode can I use ## in a macro? In MSVC I can write: #define FOO(_var) int foo##_var## = 1 FOO(b开发者_如何转开发ar);

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

精彩评论

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