喜欢这个:
#define PRINTTHIS(text) \ NSLog(@"text");
但是,当我尝试传递一个字符串到这个家伙,我最终得到“文本”打印到控制台。在宏中的字符串级别是否都不会替换所有变量?如何做到这一点?
解决方法 您将需要使用预处理器的’stringizing’运算符#,并且可能使用’token pasteing’运算符’##’:#define STRINGIFY2( x) #x#define STRINGIFY(x) STRINGIFY2(x)#define PASTE2( a,b) a##b#define PASTE( a,b) PASTE2( a,b)#define PRINTTHIS(text) \ NSLog(PASTE( @,STRINGIFY(text)));
我不知道Objective-C是否需要’@’在它和开头的引号之间没有空格 – 如果允许空格,则删除PASTE() *** 作。
请注意,对于STRINGIFY()和PASTE(),您需要愚蠢的2级间接功能才能正常使用宏参数。除非你做一些非常不寻常的事情(你不想扩展宏参数),否则它几乎从不伤害,所以以这种方式使用这些 *** 作符是非常标准的。
总结以上是内存溢出为你收集整理的objective-c – 如何使可以采用字符串的宏?全部内容,希望文章能够帮你解决objective-c – 如何使可以采用字符串的宏?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)