objC预处理器NSString宏

Car*_*rlJ 1 objective-c nsstring c-preprocessor

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

这是我尝试过的:

#define ObjectKeyMake(NAME) @"com.test.##NAME"
Run Code Online (Sandbox Code Playgroud)

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

NSLog(@"%@", ObjectKeyMake(foo)); // com.test.##NAME
Run Code Online (Sandbox Code Playgroud)

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

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

Tom*_*ing 12

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

NSString* greeting = @"Hello, " "world";
Run Code Online (Sandbox Code Playgroud)

宏实现看起来像这样:

#define ObjectKeyMake(NAME) (@"com.test." #NAME)
Run Code Online (Sandbox Code Playgroud)