Servus
Wie kriegt man es hin in 2 h-files
enum BOOLEAN {false,true};
zu definieren ohne, dass es redefined ist?
Ich möchte nämlich zB 2 files
einmal xxx.c und xxx.h erstellen und beide sollen in sämtlichen
Projekten verwendet werden können, ohne etwas hinzuzufügen oder etwas zu
löschen.
Das heisst zB:
Ich habe ein Projekt
xxx.c und xxx.h
yyy.c und yyy.h
Jetzt möchte ich einfach yyy löschen können, ohne dass mir xxx wegen
fehlendem boolean jammert.
Geht das irgendwie?
- Du definierst soetwas z.B. in einem dritten File, das von den beiden ersten includiert wird - oder Du schützt die Definition mit einem #ifdef-Wächter.
Peter D. schrieb: > Was stört Dich an:#include <stdbool.h> gar nichts, das nehme ich jetzt. M.A. S. schrieb: > - Du definierst soetwas z.B. in einem dritten File, das von den > beiden > ersten includiert wird > > - oder Du schützt die Definition mit einem #ifdef-Wächter. bei #ifndef muss ich aber immer irgend eine Konstante definieren oder? oder geht das auch so: #ifndef BOOLEAN enum BOOLEAN {false, true}; #endif
Mike schrieb: > bei #ifndef muss ich aber immer irgend eine Konstante definieren oder? Ja. Mike schrieb: > oder geht das auch so: Nein. Mike schrieb: > Peter D. schrieb: >> Was stört Dich an:#include <stdbool.h> > > gar nichts, das nehme ich jetzt. Das ist sicherlich das beste.
Mike schrieb: > bei #ifndef muss ich aber immer irgend eine Konstante definieren oder? > oder geht das auch so: Angenommen du hast eine blabla.h, die du mehrfach einbinden möchtest. Damit die Definitionen darin nicht mehrfach gelesen werden und zu Redefines führen, machst du folgendes:
1 | #ifndef BLABLA_H
|
2 | #define BLABLA_H
|
3 | |
4 | //Der ganze Krempel, der da rein soll
|
5 | |
6 | #endif
|
Jetzt wird der Inhalt der Datei nur dann überhaupt gelesen, wenn BLABLA_H im entsprechenden Kontext nicht definiert ist. Da das bei der ersten gelesenen Datei aber passiert, werden die Inhalte bei den folgenden ignoriert.
Thomas E. schrieb: > Mike schrieb: >> bei #ifndef muss ich aber immer irgend eine Konstante definieren oder? >> oder geht das auch so: > > Angenommen du hast eine blabla.h, die du mehrfach einbinden möchtest. > Damit die Definitionen darin nicht mehrfach gelesen werden und zu > Redefines führen, machst du folgendes: > #ifndef BLABLA_H > #define BLABLA_H > > //Der ganze Krempel, der da rein soll > > #endif > > Jetzt wird der Inhalt der Datei nur dann überhaupt gelesen, wenn > BLABLA_H im entsprechenden Kontext nicht definiert ist. Da das bei der > ersten gelesenen Datei aber passiert, werden die Inhalte bei den > folgenden ignoriert. danke dir vielmals und auch den anderen
Es ist in vielen Fällen ohnehin eine sehr schlechte Idee, Variable in Headerdateien zu deklarieren. In Header gehören nur die entsprechenden Tapdefinitionen und ggf. externals für Variable und Funktionen. Ebenso suggeriert der Bezeichner BOOLEAN, dass es sich um einen Typ oder ein Makro handele und nicht um eine Variable. Besser wäre wohl eher:
1 | // header.h |
2 | |
3 | typedef enum {
|
4 | false, true |
5 | } BOOLEAN; |
6 | |
7 | // Ggf. |
8 | extern BOOLEAN mein_wichtiges_globales_flag; |
und
1 | // code.c |
2 | #include "header.h" |
3 | |
4 | BOOLEAN mein_wichtiges_globales_flag; |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.