Я работаю над проектом, в котором я использую значения SysRc как возвращаемые значения из некоторой функции, такой как SUCCESS и FAILURE ond sum enums. Теперь я хочу знать, как их распечатать?Параметры перечисления SysRc в c C++
1
A
ответ
1
здание на вершине пост Нила:
Оператор переключателя обычно путь со значениями перечислений в 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 перечисления # стиля в C++
- 2. C#. Перечисления
- 3. C#, имеющие Перечисления из Перечисления
- 4. Перечисления в C++
- 5. типа перечисления в C#
- 6. Пробелы в C# Перечисления
- 7. Перечисления в Objective-C
- 8. Отображение перечисления в C++
- 9. C#: Перечисления в интерфейсах
- 10. Использование перечисления в C++
- 11. Расширенные перечисления в C#
- 12. Словарь перечисления в C#
- 13. C# получить индекс перечисления
- 14. перечисления битмаски в объективе-c или C
- 15. Основной тип C++-перечисления в C++ 03
- 16. Базовый тип перечисления C++ в C++ 0x
- 17. Альтернативные имена для C# перечисления
- 18. Объединить перечисления C++
- 19. C# Перечисления и литье
- 20. C++ инициализация значения перечисления
- 21. C# перечисления/отражение
- 22. Отображение перечисления SqlDbType - C#
- 23. C++ - инвертирование значение перечисления
- 24. Typedef перечисления Objective-C
- 25. C и перечисления
- 26. Перечисления Foreach Loop C#
- 27. C# сценариев Перечисления
- 28. C++ Печати значения перечисления
- 29. Неявные значения перечисления в C++
- 30. Каков размер перечисления в C?
ок спасибо, я просто подумал, если есть способ сделать это. –
коммутатор будет лучше и менее резервным, особенно в gcc, где вы получите хорошее предупреждение о необработанных значениях кода. –