【问题标题】:Print method name that you define with parameter打印您使用参数定义的方法名称
【发布时间】:2012-06-16 01:42:51
【问题描述】:

我们正在使用一种方法

#define CM_VALUE_1                       CM_Method(3001)

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

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

【问题讨论】:

  • 你能举个例子来说明你想要的用法吗?
  • @abhi #ifdef CM_VALUE_1 std::cout << "CM_METHOD(3001)" << std::endl; #endif
  • 抱歉,我们不能直接打印,只能使用 CM_VALUE_1 打印“CM_METHOD(3001)”
  • @abhi294074,你能把它定义为"CM_Method(3001)"吗?你只需要std::cout << CM_VALUE_1; 一个更好的方法就是完全不使用宏。
  • 您已提出 7 个问题,但没有接受一个答案。你不喜欢被帮助吗?

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


【解决方案1】:

间接使用 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 时会对其进行扩展,因此结果是参数定义的字符串化,而不是宏名称本身。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多