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

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

预先感谢您的帮助。

最佳答案

您可以使用 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 时才有效。

关于c - 在宏中使用枚举整数值来格式化字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23392386/

相关文章:

swift - 需要了解ENUM以便在SpriteKit中进行联系

c++ - 在应用程序中嵌入 SSL key

c - 这段代码的解释?

c - 如何在 C 中以表示其内容的位打印结构对象?

c - ATmega16 编程器寄存器不匹配

c - 如何声明变量参数的数据类型?

c++ - 枚举 C++ 中的宏

java - 为什么使用静态枚举?

VBA Intellisense 仅在第一个周期后显示,在键入第一个周期后没有级别

c# - c# 中的通用枚举字符串值解析器?