C -> Projektstruktur

Hawkster

Erfahrenes Mitglied
Hallo,

bin derzeit wieder viel am rumprobieren mit C. Stehe aber nun vor einem Problem.

Ich versuche gerade meinen Code zu organisieren, scheitere aber allmählich dran.

Ich habe zuerst begonnen eine globale Header-File zu schreiben, welche von allen anderen Headern included wird. Darin befinden sich Konfigurations-Information, OS-Definitionen usw. Grund hierfür ist das ich versuche das Projekt auch Windows und Linux kompilierbar zu halten.

Dazu mach ich aber auch (was evtl. schon der Fehler ist) Includes in der Globalen Header File.

Code:
...
#include "func/andere_header_1.h"
#include "func/andere_header_2.h"
...

Dazu mach ich aber auch in den anderen Headern folgendes (ich will ja das meine Funktion Globale Konstanten enthält)
Code:
...
#include "../Globale_Header.h"
...

Und an dem Punkt werde ich Skeptisch... das wirk irgendwie nach einem "rekursiven" Problem...

Ebenso ist mir schleierhaft ob "Includes" in der *.h included werden oder in der *.c
Oder macht man es in beiden Dateien?

Mfg
Hawk
 
Hi

Und an dem Punkt werde ich Skeptisch... das wirk irgendwie nach einem "rekursiven" Problem...
Ist eins.
Nicht unmöglich, aber wenn man es einfach vermeiden kann...
Und wenn nicht Umstrukturieren, dann die Abhängigkeiten wenigstens nicht
zwischen OS-abhängig/unabhängig hin- und herlaufen lassen.

Ebenso ist mir schleierhaft ob "Includes" in der *.h included werden oder in der *.c
Oder macht man es in beiden Dateien?
Überall wo Dinge aus dem Header verwendet werden,
also ggf. auch in beiden.


Damit keine Mehrfachdefs pro Modul auftreten, Includeguards:
C++:
//Headerdatei abc.h
#ifndef INCLUDE_ABC
#define INCLUDE_ABC

//Der eigentliche Inhalt

#endif
INCLUDE_ABC ist frei wählbar, aber in beiden Zeilen gleich und im Projekt möglichst eindeutig.
 
Ok, jetzt läd jede *.c / *.h Datei ihre Includes selbst (nicht über die Globale Headerfile) und es geht... Warum?

"includeguards" habe ich drin. Das hat mir mein Prof damals schön vorgebetet das ich diese ohne Ausnahme immer reinmache.

Hi


Ist eins.
Nicht unmöglich, aber wenn man es einfach vermeiden kann...
Und wenn nicht Umstrukturieren, dann die Abhängigkeiten wenigstens nicht
zwischen OS-abhängig/unabhängig hin- und herlaufen lassen.
Leider verstehe ich nicht was du mir damit sagen willst...

Lg
 
Ok, jetzt läd jede *.c / *.h Datei ihre Includes selbst (nicht über die Globale Headerfile) und es geht... Warum?
Aus dem Anfangspost war nicht mal ersichtlich, dass es ein Problem gibt :p
Klang eher nach einer theoretischen Frage.
Also: Kein Ahnung.
Ohne den Inhalt der Dateien, und was "nicht gegangen" ist (Compilerfehler, oder...)
kann man da schwer was dazu sagen.

Leider verstehe ich nicht was du mir damit sagen willst...
Dass solche "rekursiven" zyklischen Abhängigkeiten möglich sind,
aber vermieden werden sollten, wenns sowieso einfach geht
(zB. wenn man grad erst am Anfang ist und nicht unverhältnismäßig viel Änderungsaufwand hat)

Und wenn man zyklische Abhängigkeiten hat sollte man sie wenigstens "klein" halten.
Ein Konstrukt wie "A braucht B, B braucht C, C braucht D, ..., Y braucht Z, Z braucht A"
über 26 Zwischenstationen hilft der Übersichtlichkeit nicht grad.
 
Zurück