Problem mit #define
-
#define BLABLA Hallo Funktion("BLABLA");
Warum wird jetzt nicht "Hallo" über geben sondern "BLABLA"?
-
Der Präprozessor ignoriert die Inhalte von Strings.
Du könntest aber sowas schreiben:
#define BLABLA "Hallo" Funktion(BLABLA);
Der #-operator ist manchmal auch ganz nützlich, wenn der Präprozessor Strings erzeugen soll.
p.s.: Passt nicht so recht ins WinAPI-Forum.
-
Dieser Thread wurde von Moderator/in cd9000 aus dem Forum WinAPI in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Der Präprozessor führt Makro-Expansion nicht in String-Literalen durch, sondern nur mit einzeln stehenden "Worten", beispielsweise würde BLABLABLUB auch nicht durch HalloBLUB ersetzt werden.
-
Aso... Hmm. Mein Problem ist so. ich möchte ma Anfang VERSION mit z.B. v1.23 definieren und immer wenn ich das Wort VERSION benutze soll es ersetzt werden. ist das möglich?
-
Das kannst du natürlich machen.
#define VERSION v1.23
Nun wird immer, wenn du VERSION schreibst (außer in besagten Ausnahmen), das Wort mit v1.23 ersetzt bevor kompiliert wird.
Was du noch beachten musst: Das #define gilt erst ab dem Augenblick, in dem der Präpro es einliest.
Das solltest du bei der Arbeit mit mehreren Datein im Hinterkopf behalten.
Du kannst aber auch deinem Compiler direkt sagen, dass er das Makro verwenden soll. (Entweder mit der entsprechenden Option in der Kommandozeile oder in den Projekteinstellungen)
-
SeppSchrot schrieb:
Das kannst du natürlich machen.
#define VERSION v1.23
Nun wird immer, wenn du VERSION schreibst (außer in besagten Ausnahmen), das Wort mit v1.23 ersetzt bevor kompiliert wird.
Was du noch beachten musst: Das #define gilt erst ab dem Augenblick, in dem der Präpro es einliest.
Das solltest du bei der Arbeit mit mehreren Datein im Hinterkopf behalten.
Du kannst aber auch deinem Compiler direkt sagen, dass er das Makro verwenden soll. (Entweder mit der entsprechenden Option in der Kommandozeile oder in den Projekteinstellungen)Das Wort VERSION benutze ich eigentlich nur immer zwischen zwei ". Kann ich diese Ausnahmen umgehen?
-
#define VERSION "v1.2"
puts("Dies ist geiles programm " VERSION);
und ausgegeben wird:
Dies ist geiles programm v1.2