Я пытаюсь создать определение макроса, которое может генерировать C++ или Objective-C в зависимости от контекста, но, похоже, не может легко создать NSString внутри макроса. Версия на C++ проста, потому что использует обычные строки, но создание такой, которая выдает NSString, оказывается сложной задачей:
#define FOO(x) bar(@##x)
Предполагаемый результат состоит в том, чтобы преобразовать строковый аргумент в аргумент NSString, добавив префикс @
:
FOO("x")
// => bar(@"x")
Вместо этого я получаю ошибку, препятствующую компиляции:
Pasting formed '@"x"', an invalid preprocessing token