Source Code organisieren
-
Hallo Forum,
wisst Ihr zufällig ein gutes Tuttorial wie man Source Code in C organisiert? Ich habe ein Projekt erstellt mit vielen Structs, globalen Variablen und sehr vielen Funktionen. Aber alles in einer .c Datei. Wenn ich versuche den Code auf mehrere Dateien aufzuteilen gibt es immer Fehler... mal findet er die globalen Variablen nicht, mal sind Funktionen schon definiert...
Wo bringt man am besten globale Variablen unter? In einem Header File sieht ja nicht gut aus...
Mit einem Link auf ein kleines Beispielprojekt wäre mir auch schon geholfen...Viele Grüße
Mike
-
Ein paar Ratschläge
(1) Globale Variablen sollte man generell vermeiden. Es gibt fast keine
Gründe, sie zu benutzen.(2) Deklarationen (also z.B. typedefs, Funktionsprototypen) gehören in die
Header.(3) In einem Header niemals die Includewächter vergessen.
(4) Implementierungen gehören in die .c-Dateien.
-
Mit einem Link auf ein kleines Beispielprojekt wäre mir auch schon geholfen...
Vielleicht wirst du bei sourceforge fündig. Aber pass gut auf, dass du ein schönes C-Programm findest
mfg
-
Taurin schrieb:
(3) In einem Header niemals die Includewächter vergessen.
Was ist ein "Includewächer"?
-
Was ist ein "Includewächer"?
Na sowas hier:
#ifndef HEADER_H #define HEADER_H struct Data { ... } typedef Data DATA; int prototyp(int); // implementierung in die .c - File extern int var_deklaration; // definition in die .c - File #endif
mfg
-
Ich mein das #ifndef #define #endif Zeug
-
Aaachso...
Na, das hätte ich mir aber auch denken können.
-
Vielen Dank. Ich nehm mal den Vorschlag Taurin/Name
-
Wie wuerde es aussehen, wenn ich den Sourcecode gleich mit in die Headerdatei packen moechte?
-
Ich meine damit natuerlich nur den Code der einzelnen Funktionen, den ich auch in die Headerdatei packen moechte.
-
Das geht höchstens, wenn du sie außerdem static deklarierst (oder halt Makros baust) - allerdings würde ich das, wo es anders geht, vermeiden. Header sind nicht dazu gedacht, dass man Funktionen darin implementiert.
-
http://www.amazon.de/exec/obidos/ASIN/0201633620/qid=1097958931/br=3-1/br_lfncs__1/028-1363784-9752568
Dürfte auch für C weitestgehend passen.