gpt4 book ai didi

c - 允许 llvm/clang 查看枚举标签的文本?

转载 作者:太空宇宙 更新时间:2023-11-04 03:35:28 27 4
gpt4 key购买 nike

我目前在 C 代码中有以下枚举。例如,

typedef enum {
FIRST,
SECOND,
LAST
}

我正在尝试对标签进行检测,并编写了一个通过 C 代码的模块传递。但是,我注意到枚举标签已经解析为整数。它只显示为数字,原始文本消失了。但我也希望枚举的名称也显示出来。

我想知道是否有技巧可以做到这一点?

感谢您提供的潜在帮助。

最佳答案

这对 X Macros 来说是个不错的任务:

#include <stdio.h>

#define COLOR_TABLE \
X(red, "red") \
X(green, "green") \
X(blue, "blue")

#define X(a, b) a,
enum COLOR {
COLOR_TABLE
};
#undef X

#define X(a, b) b,
char *color_name[] = {
COLOR_TABLE
};
#undef X

int main() {
enum COLOR c = red;
printf("c=%s\n", color_name[c]);
return 0;
}

另一种方式(使用字符串化):

#include <stdio.h>

#define COLOR_TABLE \
X(red) \
X(green) \
X(blue)

#define X(t) t,
enum COLOR {
COLOR_TABLE
};
#undef X

#define X(t) #t,
char *color_name[] = {
COLOR_TABLE
};
#undef X

int main() {
enum COLOR c = red;
printf("c=%s\n", color_name[c]);
return 0;
}

关于c - 允许 llvm/clang 查看枚举标签的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33109081/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com