1

我们正在使用一种方法

#define CM_VALUE_1                       CM_Method(3001)

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

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

4

1 回答 1

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)

如果参数 toMAKE_STR2本身是一个宏,则在调用 时会对其进行扩展MAKE_STR,因此结果是参数定义的字符串化,而不是宏名称本身。

于 2012-06-13T06:42:26.030 回答