Jan schrieb:
> Aber warum? A_H_ wird beim ersten mal doch definiert und somit darf
> isValid doch eigentlich nicht noch einmal definiert werden oder?
Das gilt immer nur für einen Compiler-Lauf. Wenn die zweite .c Datei
kompiliert wird, gibt's A_H_ nicht mehr. Das "#ifndef A_H_" schützt nur
davor, den selben Header bei einem Compiler-Aufruf mehrfach zu
inkludieren.
In der Header-Datei schreibst du:
1 | #ifndef A_H_
|
2 | #define A_H_
|
3 | extern bool isValid;
|
4 | #endif
|
Und in einer .c -Datei:
1 | #include "a.h"
|
2 | bool isValid;
|
Dann funktioniert es. Es ist aber ziemlich unschön, von mehreren Dateien
auf eine Variable zuzugreifen; das wird schnell unübersichtlich, und
verschiedene Vorgänge beeinflussen sich gegenseitig. Besser macht man so
etwas mit Kapselung, Getter/Setter-Funktionen, ggf. OOP.