Möglich, eine Liste von #Definitionen in Strings umzuwandeln

Angenommen, ich habe eine Liste von#defines in einer Header-Datei für eine externe Bibliothek. Diese#defines stellen Fehlercodes dar, die von Funktionen zurückgegeben wurden. Ich möchte eine Konvertierungsfunktion schreiben, die als Eingabe einen Fehlercode und als Ausgabe ein Zeichenfolgenliteral zurückgeben kann, das das tatsächliche @ darstell#define Name

Als Beispiel, wenn ich @ ha

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

Ich möchte, dass eine Funktion wie @ aufgerufen werden ka

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

Und habenconvertToString() in der Lage sein, diesen Fehlercode automatisch umzuwandeln, ohne ein riesiges Schaltergehäuse zu sein, das wie @ aussie

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

Ich habe das Gefühl, dass, wenn dies möglich ist, Vorlagen und Metaprogramme verwendet werden könnten, aber das würde nur funktionieren, wenn die Fehlercodes tatsächlich ein Typ und keine Prozessormakros sind.