Определение препроцессора Objective-C, динамическое объявление C-String в NSString

Я пытаюсь создать определение макроса, которое может генерировать C++ или Objective-C в зависимости от контекста, но, похоже, не может легко создать NSString внутри макроса. Версия на C++ проста, потому что использует обычные строки, но создание такой, которая выдает NSString, оказывается сложной задачей:

#define FOO(x) bar(@##x)

Предполагаемый результат состоит в том, чтобы преобразовать строковый аргумент в аргумент NSString, добавив префикс @:

FOO("x")
// => bar(@"x")

Вместо этого я получаю ошибку, препятствующую компиляции:

Pasting formed '@"x"', an invalid preprocessing token
6
задан tadman 6 June 2012 в 19:46
поделиться