我们正在使用方法
#define CM_VALUE_1 CM_Method(3001)
CM_Method是在同一文件中定义的方法。
我只想在vc ++
中使用CM_Method(3001)
来打印CM_VALUE_1
答案 0 :(得分:5)
间接使用stringize预处理程序操作符来获取所需内容。
#define MAKE_STR(X) #X
#define MAKE_STR2(X) MAKE_STR(X)
std::cout << MAKE_STR(CM_VALUE_1)
<< " is " << MAKE_STR2(CM_VALUE_1)
<< std::endl;
将导致
CM_VALUE_1 is CM_METHOD(3001)
如果MAKE_STR2
的参数本身是一个宏,则在调用MAKE_STR
时会扩展它,因此结果是参数定义的字符串化,而不是宏名称本身。