Möglich, eine Liste von #Definitionen in Strings umzuwandeln
Angenommen, ich habe eine Liste von#define
s in einer Header-Datei für eine externe Bibliothek. Diese#define
s 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.