Frage zur Verwendung von # in macros
-
Hallo, ich habe mal eine Frage zu einer bestimmten Art von macros.
Nehmen wir an, ich wollte in einem Macro eine Variable erstellen, die initialisieren und später noch verwenden. Ungefähr so:#define CREATE_AND_INIT_MY_VARIABLE(Name, low, high) \ unsigned int #Name = (unsigned int)high<<16|low //... int main() { short one, two; CREATE_AND_INIT_MY_VARIABLE(test, one, two); //erstelle die variable test += 1; //mache etwas mit der variable }
Dabei bekomme ich aber eine Fehlermeldung
Line 9 error: expected unqualified-id before string constant
Abgesehen davon, dass das Konstrukt nicht unbedingt Sinn macht: Ist soetwas über macros möglich?
-
Mittels # in einem Makro sorgst du dafür, daß automatisch Anführungszeichen um den Makroparameter gesetzt werden, d.h. dein Aufruf sieht der Compiler dann so:
unsigned int "Name" = (unsigned int)high<<16|low
Richtig ist es einfach ohne das #:
#define CREATE_AND_INIT_MY_VARIABLE(Name, low, high) \ unsigned int Name = (unsigned int)high<<16|low
In deinem Code würde ich jedoch einfach nur für die eigentliche Funktion das Makro schreiben, d.h.
#define MAKE_WORD(low, high) ((high)<<16|(low))
Beachte die Klammern wegen Operatorprioritäten!!!