Как преобразовать переменную типа enum в строку?


Как сделать printf, чтобы показать значения переменных, которые имеют тип перечисления? Например:

typedef enum {Linux, Apple, Windows} OS_type; 
OS_type myOS = Linux;

а мне нужно что-то вроде

printenum(OS_type, "My OS is %s", myOS);

который должен показывать строку "Linux", а не целое число.

Я полагаю, сначала я должен создать индексированный по значению массив строк. Но я не знаю, если это самый красивый способ сделать это. Возможно ли это вообще?

28 86

28 ответов: