C宏,它创建一个NSString变量,变量名称作为字符串的内容

时间:2012-05-04 13:25:28

标签: ios objective-c c-preprocessor

尽管这不是一个好的编码实践,但我想要一个应该如下工作的宏:

CREATE_STRING(fooBar)

它应该创建以下代码:

NSString *fooBar = @"fooBar";

我的宏看起来像这样:

#define CREATE_STRING(varName) NSString *varName = @"varName";

但现在我得到以下

NSString *fooBar = @"varName";

这似乎是一个容易解决的问题,我已经检查了文档from IBM,但我似乎无法将varName放入字符串中。

2 个答案:

答案 0 :(得分:14)

使用

#define CREATE_STRING(varName) NSString *varName = @#varName

代替。 (另请注意,您不需要使用尾随分号,以便能够将您的宏“调用”为类似C的函数。)

答案 1 :(得分:10)

这是怎么做的

#define CREATE_STRING(varName) NSString *varName = @"" #varName

它利用了两个字符串常量一个接一个地被编译器连接起来的事实。