#define
-
Hallo zusammen,
Was beudeutet:
#defineIch hab jetzt schon öfters folgenden Syntax gesehen:
#define Name "Sowieso"Und dann wurde "Name" wie eine Variable behandelt...
Dann kann man doch sofort ne Variable deklarieren oder ?MfG.
-
C++Lerner schrieb:
Und dann wurde "Name" wie eine Variable behandelt...
Dann kann man doch sofort ne Variable deklarieren oder ?Ja, das solltest Du auch machen.
-
Und wofür ist dann #define ?
-
C++Lerner schrieb:
Und dann wurde "Name" wie eine Variable behandelt...
Wenn es ein Literal ist dann ist die "Variable" aber nicht beschreibbar

mit #define werden einfach Textstellen im Code vor der kompilierung verändert.
-
C++Lerner schrieb:
Und wofür ist dann #define ?
Das define meldet dem Präprozessor lediglich, dass alle Stellen, wo Name vorkommt der String "Sowieso" eingesetzt wird. Von dem her ist das keine Variable, die man verändern kann, sondern eher eine Konstante. Nichtsdesto trotz sollte man defindes auch nicht als Konstanten nehmen, sondern nur in speziellen Fällen, wo man eine solche Textersetzung wirklich braucht. (Sprich, wenn man etwas braucht, was so geändert werden muss, bevor es in den Compiler geht).
-
drakon schrieb:
Nichtsdesto trotz sollte man defindes auch nicht als Konstanten nehmen, sondern nur in speziellen Fällen, wo man eine solche Textersetzung wirklich braucht.
Das stimmt. Ich nehme am leibsten enums für symbolische Konstanten
-
Achso !
Jetzt versteh ich das glaube ich *freu*Könnte mir jemand ein Bsp geben, bei dem #define nötig ist ?
-
C++Lerner schrieb:
Achso !
Jetzt versteh ich das glaube ich *freu*Könnte mir jemand ein Bsp geben, bei dem #define nötig ist ?
#include <iostream> #include <cmath> #define SHOW(x) (std::cout<<(#x)<<'='<<(x)<<'\n') int main() { int x=5; SHOW(x); SHOW(sqrt(x)); }
-
Headerguards.
#ifndef file_h #define file_h //... #endif // file_hUnd das aus dem Grund, dass man verhindern muss, dass der Compiler den Inhalt (ein zweites mal) überhaupt zu sehen kriegt.
-
ja, den Zweck kenn ich

@volkard:
Danke, das hab ich gebraucht !@ Alle:
Vielen dank für die schnelle Aufklärung