【问题标题】:Use enum integer value in a macro to format a string在宏中使用枚举整数值来格式化字符串
【发布时间】:2014-04-30 15:38:54
【问题描述】:

我想使用这样的枚举值:

enum state{
STATE_OK =0,
STATE_KO =1};

在这样的宏中:

#define DISPLAY_STATE_OK "StateOK="STATE_OK

我想这样使用它:

printf(DISPLAY_STATE_OK);

要打印:StateOK=0

这是一个解释我需要的基本示例。但它确实有效,有什么想法吗?也许通过用宏#define STATE_OK 0 替换枚举(不是“0”,因为我需要将它用作整数)。但它也确实有效。

提前感谢您的帮助。

【问题讨论】:

  • 你的意思是doesn't work 对吧?
  • 是否定义了STATE_OK

标签: c macros enums c-preprocessor


【解决方案1】:

您可以使用字符串化宏操作符#

#define STATE_OK (0)

#define STRINGIFY_2(s) STRINGIFY(s)
#define STRINGIFY(s) #s
#define DISPLAY_STATE_OK "StateOK=" STRINGIFY_2(STATE_OK)

但这只有在您#define 值而不是使用enum 时才有效。

【讨论】:

  • 谢谢,这就是我要找的。​​span>
【解决方案2】:

代替:

#define DISPLAY_STATE_OK "StateOK="STATE_OK

也许:

#define DISPLAY_STATE_OK "StateOK=%d", STATE_OK

【讨论】:

  • 只要能保证在printf.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-10
  • 1970-01-01
  • 2022-07-15
  • 1970-01-01
  • 2011-08-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多