コンテキストに応じて C++ または Objective-C を発行できるマクロ定義を作成しようとしていますが、マクロ内で NSString を簡単に構築できないようです。C++ バージョンは通常の文字列を使用するため単純ですが、NSString を発行するものを作成するのは難しいことがわかります。
#define FOO(x) bar(@##x)
意図した結果は、次のプレフィックスを付けて、文字列引数を NSString 引数に変換すること@
です。
FOO("x")
// => bar(@"x")
代わりに、コンパイルを妨げるエラーが表示されます。
Pasting formed '@"x"', an invalid preprocessing token