Xcode & препроцессор ## - PullRequest
       4

Xcode & препроцессор ##

2 голосов
/ 08 декабря 2010

В Xcode я могу использовать ## в макросе?

В MSVC я могу написать:

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

    FOO(bar);
    foobar++;

На Mac ( edit: компиляция с GCC) тот же код выдает мне ошибку: "Pasting" foobar "и" = "не дают действительный токен предварительной обработки. ## не поддерживается в xcode

1 Ответ

10 голосов
/ 08 декабря 2010

Конкатенация поддерживается в 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
                               ^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...