Возможно преобразовать список #defines в строки

Предположим, у меня есть список#defines в заголовочном файле для внешней библиотеки. Эти#defines представляют коды ошибок, возвращаемые функциями. Я хочу написать функцию преобразования, которая может принимать на вход код ошибки и возвращать в качестве вывода строковый литерал, представляющий фактическую#define название.

Как пример, если у меня есть

#define NO_ERROR 0
#define ONE_KIND_OF_ERROR 1
#define ANOTHER_KIND_OF_ERROR 2

Я хотел бы, чтобы функция могла вызываться как

int errorCode = doSomeLibraryFunction();
if (errorCode)
    writeToLog(convertToString(errorCode));

И имеютconvertToString() быть в состоянии автоматически преобразовать этот код ошибки, не будучи похожим на гигантский случай переключения

const char* convertToString(int errorCode)
{
    switch (errorCode)
    {
        case NO_ERROR:
           return "NO_ERROR";
        case ONE_KIND_OF_ERROR:
           return "ONE_KIND_OF_ERROR";
        ...
     ...
...

У меня есть ощущение, что если это возможно, это было бы возможно с использованием шаблонов и метапрограммирования, но это работало бы только на то, что коды ошибок были фактически типом, а не набором макросов процессора.

Ответы на вопрос(8)

Ваш ответ на вопрос