definitionen

Gast #5722562
Lesenswert?
• ▲
▼
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?
Gast #5722611
Lesenswert?
• ▲
▼
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
#5722626
Lesenswert?
• ▲
▼
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.
Gast #5722790
Lesenswert?
• ▲
▼
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
(Firma: Schweigstill IT) Persönliche Seite #5722807
Lesenswert?
• ▲
▼
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;

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.