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.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage