我正在一個項目中,我正在使用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