Ich versuche, ein Compiler-Makro in C++ zu erstellen, das eine (Compiler-)Variable definiert und dann eine C++-Methode aufruft. Wenn ich beispielsweise Folgendes in meinem C++-Code habe:
Code: Select all
TL_CLI_ADD_EXIT_CODE(123,"SOMENAME","Description of code")
Ich möchte, dass der Compiler es erweitert auf:
Code: Select all
#define EXITCODE_SOMENAME 123
addExitCode(123,"SOMENAME","Description of code");
Der nächste Code, den ich gefunden habe, ist:
Code: Select all
// Macro to concatenate EXITCODE_ prefix with the number
#define TL_CLI_CONCAT_EXITCODE(number) EXITCODE_##number
// Macro to create a new exit code definition
#define TL_CLI_ADD_EXIT_CODE(c,n,d) \
#define TL_CLI_CONCAT_EXITCODE(n) c \
addExitCode(c,\"n\",d);
Ist das, was ich versuche, überhaupt möglich? Ich scheine zwischen verschiedenen Fehlern zu wechseln, einschließlich „Auf ‚#‘ folgt kein Makroparameter“. Kann mir jemand raten, was falsch ist?