我正在尝试创建一个宏定义,该定义可以根据上下文发出 C++ 或 Objective-C,但似乎无法在宏内轻松构造 NSString。C++ 版本很简单,因为它使用常规字符串,但制作一个发出 NSString 的字符串被证明是棘手的:
#define FOO(x) bar(@##x)
预期的结果是通过前缀将字符串参数转换为 NSString 参数@
:
FOO("x")
// => bar(@"x")
我得到的是一个阻止编译的错误:
Pasting formed '@"x"', an invalid preprocessing token