我在構建設置預處理宏值到目標C字符串文字
FOO=BAR
該值欲按摩到一個Objective-C字符串文字可以被傳遞給方法中定義的預處理宏。下面的#define不起作用,但它應該表現出什麼,我想實現:
#define FOOLITERAL @"FOO" //want FOOLITERAL to have the value of @"BAR"
myMethodThatTakesAnNSString(FOOLITERAL);
我希望,我只是缺少明顯的莫名其妙,但我似乎無法找到合適的預處理巫術得到什麼我需要。
這樣做。我嘗試了雙重間接,但也有「@」作爲宏觀價值,似乎混淆了它。 一個小的區別是,第一行並不代表我的情況下,它不會檢索構建設置 的#define FOOVAL FOO 的#define STRINGIZE(X)#X 的#define STRINGIZE2(X)STRINGIZE(X) #define FOOLITERAL @ STRINGIZE2(FOOVAL) 實際上是爲我工作的。但你的回答讓我在那裏。 – vagrant
嗨@vagrant。這個解決方案是否仍然適用於LLVM?我試圖讓這個工作,但在我的構建設置預處理器宏定義的FOO的實際價值從不出現。你可以用適合你的解決方案更新你的問題嗎?乾杯。 – epologee
爲什麼不只是'#define Helper(STR)@#STR'? – tadeuzagallo