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

abh*_*074 1 .net c++ dev-c++ visual-c++

我们正在使用一种方法

#define CM_VALUE_1                       CM_Method(3001)
Run Code Online (Sandbox Code Playgroud)

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

我只想在vc ++中CM_Method(3001)使用打印CM_VALUE_1

jxh*_*jxh 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;
Run Code Online (Sandbox Code Playgroud)

会导致

CM_VALUE_1 is CM_METHOD(3001)
Run Code Online (Sandbox Code Playgroud)

如果参数to MAKE_STR2本身是一个宏,则在调用时会扩展它MAKE_STR,因此结果是参数定义的字符串化,而不是宏名称本身.