7

尽管这不是一个好的编码习惯,但我想要一个应该像下面这样工作的宏:

CREATE_STRING(fooBar)

它应该创建以下代码:

NSString *fooBar = @"fooBar";

我的宏看起来像这样:

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

但现在我得到以下

NSString *fooBar = @"varName";

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

4

2 回答 2

15

采用

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

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

于 2012-05-04T13:30:40.503 回答
10

这是怎么做的

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

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

于 2012-05-04T13:53:45.143 回答