objC预处理器NSString宏

时间:2012-06-18 08:19:55

标签: objective-c nsstring c-preprocessor

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

以下是我的尝试:

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

如果我通过电话打印结果我得到:

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

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

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

2 个答案:

答案 0 :(得分:11)

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

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

宏实现如下所示:

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

答案 1 :(得分:-1)

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