Konstante definieren
-
Wenn man eine Integer Konstante definiert
#define STATUS_EMPTY -1
sollte man dabei eigentlich immer Klammern drumherum machen wie z.B
#define STATUS_EMPTY (-1)
-
nicht unbedingt, aber nicht schlecht
#define X 1 void foo() { int z=X; }
Das ist äquivalnent zu
void foo() { int z=1; }
int z=(1); ist auch nicht falsch, aber da unnötig.
Klammern bei define sollte man benutzen, wenn man Sachen wie
int x = a ? X : 7; oder so. Denn da kann unter Umständen zu Problemen führen, wenn es keine Klammern gibt.
Laut C Grammatikconditional_expression : logical_or_expression | logical_or_expression '?' expression ':' conditional_expression ;
und mit expression könnte es Probleme geben.
-
Ich denke dass der PREPROZESSOR schon automatisch Klammern drumherum macht!
Ganz einfach aus folgendem Beispiel:
Der folgende Quellcode lässt sich compilieren!!
#include <stdio.h> #define STATUS_EMPTY -1 int main(int argc, char **argv) { printf("%d\n", -STATUS_EMPTY); return 0; }
obwohl wenn man direkt einsetzen würde dann würde ja folgendes rauskommen:
#include <stdio.h> #define STATUS_EMPTY -1 int main(int argc, char **argv) { printf("%d\n", --1); return 0; }
und dieses --1 geht doch nicht weil ich ne eins keine Variable ist also denk ich, dass er schon automatisch immer KLammern drumherum macht, was daraus ein -(-1) mach was ja wieder erlaubt ist.
-
Georgius schrieb:
Ich denke dass der PREPROZESSOR schon automatisch Klammern drumherum macht!
Nein.
und dieses --1 geht doch nicht weil ich ne eins keine Variable ist also denk ich, dass er schon automatisch immer KLammern drumherum macht, was daraus ein -(-1) mach was ja wieder erlaubt ist.
Nein. - und STATUS_EMPTY sind zwei Präprozessor-Tokens. Unterschiedliche Präprozessor-Tokens sind auch automatisch unterschiedliche Tokens, also werden --1 drei Tokens, als hättest Du - - 1 geschrieben.
-
was ist denn schöner:
Variante a: #define STATUS_EMPTY -1
Variante b: Konstanten in einem eigenen header zB constants.h zu definieren, like: const short STATUS_EMPTY = -1;
Bitte abstimmen (am besten mit einer Begründung), thanx'