gpt4 book ai didi

c - 枚举成员的字符串化

转载 作者:行者123 更新时间:2023-12-04 11:14:26 25 4
gpt4 key购买 nike

我需要将枚举成员(它的值,而不是标识符)转换为字符串。我尝试了以下方法,它适用于 MACRO (TYPE_A),但不适用于枚举值 (typeA)。我认为这有点奇怪。

你知道怎么做吗?


#define _tostr(a) #a
#define tostr(a) _tostr(a)

typedef enum _SPECIAL_FOLDER_ID {
typeA = 3,
typeB = 4,
} SPECIAL_FOLDER_ID;

#define TYPE_A 3

int main() {
//this is working, but the information is a macro (TYPE_A)
printf("The string is " tostr(TYPE_A) ".\n");

//this is not working for typeA (defined in an enumeration)
printf("The string is " tostr(typeA) ".\n");
return 0;
}

输出是:

The string is 3.The string is typeA.

我需要以某种方式修改代码,以便输出的第二行将是“字符串是 3。”

谢谢!

PS:我不想使用 printf 打印值。我需要一个包含该值的静态字符串。我只用printf来测试结果...

最佳答案

预处理器不知道 C。它只知道“文本”。
当它处理你的文件时,typeA 只是 5 个字母。只有编译器会知道(在预处理器完成后)typeA 有一个值,并且该值为 3。

关于c - 枚举成员的字符串化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1514031/

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