在宏中使用枚举整数值来格式化字符串

时间:2014-04-30 15:38:55

标签: c macros enums c-preprocessor

我想使用这样的枚举值:

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”,因为我需要将它用作整数)。但它确实也有效。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

而不是:

#define DISPLAY_STATE_OK "StateOK="STATE_OK

也许:

#define DISPLAY_STATE_OK "StateOK=%d", STATE_OK

答案 1 :(得分:1)

您可以使用stringify宏运算符#

#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