我正在一个项目中,我正在使用SysRc值作为返回值从一些函数,如SUCCESS和FAILURE和枚举sum枚举。 现在我想知道如何让他们打印?在c C++的SysRc枚举值
1
A
回答
1
大厦:
switch语句通常要在C++枚举值的方式。您可以使用#define
-macros节省一些写作工作,但我个人会避免它们。
enum E { foo, bar };
const char * ToStr(E e) {
switch(e) {
case foo: return "foo";
case bar: return "bar";
};
throw std::runtime_error("unhandled enum-value"); // xxx
}
gcc会警告您未处理的案例值。
0
无法直接在C或C++中执行此操作 - 您必须编写将枚举值作为参数并将其转换为字符串的函数。尼尔的帖子顶上
enum E { foo, bar };
const char * ToStr(E e) {
if (e == foo) {
return "foo";
}
else {
return "bar";
}
}
0
正如其他人所说,你不能得到枚举名称。然而,你可以使用X-宏来生成两个枚举和字符串数组:
在colours.h:
#define COLOUR_VALUES \
X(RED) \
X(BLUE) \
X(YELLOW)
#define X(a) a,
typedef enum {
COLOUR_VALUES
} colour_t;
#undef X
extern char *colour_names[];
在colours.c:
#include "colours.h"
#define X(a) #a,
char *colour_names[] = {
COLOUR_VALUES
};
#undef X
void print_colour(colour_t colour)
{
printf("%s\n", colour_names[colour]);
}
相关问题
- 1. 枚举值在C++
- 2. 枚举关联值在C
- 3. 在C#枚举#
- 4. 枚举在C++
- 5. 枚举在C
- 6. C++的枚举
- 7. 枚举类C++ -replacement-在C#
- 8. 枚举在Objective-C对C
- 9. C#:排序/ OrderBy枚举值
- 10. 设置空值枚举C#
- 11. 枚举值作为C++
- 12. C#:基于不同枚举类型的枚举值返回枚举值
- 13. 枚举值的内存位置在C
- 14. C++与枚举
- 15. C++和枚举
- 16. Objective-C枚举
- 17. 枚举C++类
- 18. C++枚举
- 19. C#。枚举
- 20. C++枚举
- 21. C#:枚举IEnumerable的循环枚举
- 22. C++ - 程序中的多枚举枚举
- 23. 与protobuf的枚举替换C++枚举
- 24. 如何枚举Objective-C中的枚举?
- 25. C++在枚举中有数组值?
- 26. 通过访问向枚举值 '::' 在C++
- 27. 在枚举值之间切换:C++
- 28. 在JSON序列化枚举值(C#)
- 29. 在C#或VB.NET中减少值枚举
- 30. 在SQL Server表C#枚举使用值
好,谢谢,我只是想如果有什么办法的话。 – 2010-05-26 12:07:14
一个开关会更好,更少冗余,特别是在gcc中,你可以在未处理的case值上得到一个很好的警告。 – 2010-05-26 12:09:22