尽管这不是一个好的编码实践,但我想要一个应该如下工作的宏:
CREATE_STRING(fooBar)
它应该创建以下代码:
NSString *fooBar = @"fooBar";
我的宏看起来像这样:
#define CREATE_STRING(varName) NSString *varName = @"varName";
但现在我得到以下
NSString *fooBar = @"varName";
这似乎是一个容易解决的问题,我已经检查了文档from IBM,但我似乎无法将varName
放入字符串中。
答案 0 :(得分:14)
使用
#define CREATE_STRING(varName) NSString *varName = @#varName
代替。 (另请注意,您不需要使用尾随分号,以便能够将您的宏“调用”为类似C的函数。)
答案 1 :(得分:10)
这是怎么做的
#define CREATE_STRING(varName) NSString *varName = @"" #varName
它利用了两个字符串常量一个接一个地被编译器连接起来的事实。