Kurze Frage:
Warum wird manchmal bei z.B. "#define MAX_XY (1)" der Wert in Klammern gesetzt?
Hat das irgendeinen Vorteil ? Konnte bisher nix dazu finden.
Danke.
Kurze Frage:
Warum wird manchmal bei z.B. "#define MAX_XY (1)" der Wert in Klammern gesetzt?
Hat das irgendeinen Vorteil ? Konnte bisher nix dazu finden.
Danke.
Dient nur der übersichtlichkeit.
#define MAX_XY (1)
ist genau das gleiche wie:
#define MAX_XY 1
Außer du willst #define's in sscanf2 benutzen, dann musst du sie ohne Klammern angeben.
Pain aka. DeaThHoPe, kannste mal Beispiel zeigen ? Bin mir nicht sicher ob du den Stringize-Operator meinst.
//Edit: Na dann
Ja, ich meinte das Stringizing.
#define MAX_NAME 24
new dest[MAX_NAME];
sscanf("Hans_Wurst","s[" #MAX_NAME "]",dest);
Die Klammern dienen nicht nur der Übersichtilichkeit, sie haben auch einen logischen Zweck:
Bsp:
#define MULTIPLIZIEREN(%0,%1) %0 * %1
//
main()
{
return printf("%d", MULTIPLIZIEREN(5+2,3));
}
eigentlich sollte jetzt 21 ausgegeben werden. (7 * 3)
das ist aber nicht der Fall, denn nach dem Präprozessor sieht der code so aus:
main()
{
return printf("%d", 5+2 * 3); //ergebnis: 11 (Punkt vor Strich!)
}
um solche Fehler zu vermeiden ist es sinnvoll, die makros in Klammern zu setzten, da Klammern vor der Punkt-vor-Strich Regel kommen:
#define MULTIPLIZIEREN(%0,%1) ((%0) * (%1))
//
main()
{
return printf("%d", MULTIPLIZIEREN(5+2,3)); //nach präprozessor: printf("%d", ((5+2) * (3))); ergebnis: 21
}