使用参数定义的打印方法名称

时间:2012-06-13 06:10:34

标签: c++ .net visual-c++ dev-c++

我们正在使用方法

#define CM_VALUE_1                       CM_Method(3001)

CM_Method是在同一文件中定义的方法。

我只想在vc ++

中使用CM_Method(3001)来打印CM_VALUE_1

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时会扩展它,因此结果是参数定义的字符串化,而不是宏名称本身。