1

我在创建一个预处理器宏函数时遇到问题,它连接两个字符串并“返回”一个NSString(@"...") 值。

这是我尝试过的:

#define ObjectKeyMake(NAME) @"com.test.##NAME"

如果我从通话中打印结果,我会得到:

NSLog(@"%@", ObjectKeyMake(foo)); // com.test.##NAME

所以我的问题是:如何在预处理器宏中连接 2 个字符串并“返回”一个 NSString (@"..")?

不,我不能使用#define ObjectKeyMake(NAME) [@"com.test." stringByAppendingString: NAME],因为我需要一个编译时常量。

4

2 回答 2

14

您可以利用编译器组合彼此相邻的字符串文字这一事实,如下所示:

NSString* greeting = @"Hello, " "world";

宏实现如下所示:

#define ObjectKeyMake(NAME) (@"com.test." #NAME)
于 2012-06-18T08:31:18.997 回答
-1
#define ObjectKeyMake(NAME) @"com.test."#NAME
于 2012-06-18T08:32:40.517 回答