Machen Sie etwas sowohl eine C-Kennung als auch eine Zeichenfolge?

Angenommen, Sie möchten eine übereinstimmende Liste von Bezeichnern und Zeichenfolgen erstellen

enum
{
NAME_ONE,
NAME_TWO,
NAME_THREE
};

myFunction(NAME_ONE, "NAME_ONE");
myFunction(NAME_TWO, "NAME_TWO");
myFunction(NAME_THREE, "NAME_THREE");

..ohne sich zu wiederholen und ohne den Code automatisch zu generieren, mit C / C ++ - Makros

Erste Vermutung:

Sie können eine # include-Datei hinzufügen, die Folgendes enthält

myDefine(NAME_ONE)
myDefine(NAME_TWO)
myDefine(NAME_THREE)

Dann benutze es zweimal wie folgt:

#define myDefine(a) a,
enum {
#include "definitions"
}
#undef myDefine

#define myDefine(a) myFunc(a, "a");
#include "definitions"
#undef myDefine

aber mit #define können Sie keine Parameter innerhalb eines Strings setzen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage