我试图用ANSI “字符串化” 预处理操作符# 向信息中插入符号常量的值, 但它字符串化的总是宏的名字而不是它的值。

来源:互联网 发布:director.js 编辑:程序博客网 时间:2024/05/20 04:49
我试图用ANSI “字符串化” 预处理操作符# 向信息中插入符号常量的值, 但它字符串化的总是宏的名字而不是它的值。
你可以用下面这样的两步方法迫使宏既字符串化又扩展:
#define  Str(x)  #x
#define  Xstr(x)  Str(x)
#define  OP  plus
char  *opname  =  Xstr(OP);
这段代码把opname 置为“plus” 而不是“OP”。
在使用符号粘接操作符## 连接两个宏的值(而不是名字) 时也要采用同样的“迂回战术”。
0 0