mampfe Geschrieben 11. August 2012 Geschrieben 11. August 2012 Hallo zusammen, um mein aktuelles C-Projekt übersichtlicher zu gestalten, möchte ich die ganzen Funktionen auf mehrere Quelldateien aufteilen. Allerdings bereitet mir das include Schwierigkeiten, da der Compiler manche Funktionen, Strukturen, VAriablen etc.. nicht kennt. Zur Vereinfachung folgender Fall: Dateien main.c, main.h, output.c, output.h (#include <output.h> in main.c) Wo definiere ich Funktionen und Strukturen, die in beiden *.c-Dateien verwendet werden? Was ist mit globalen Variablen und Strukturen? Aktuell sind diese in der main.h, aber der Compiler kennt sie bei Verwendung in output.c nicht... wenn ich die Definitionen zusätzlich in output.h rein mache sagt er, dass es 2x definiert wurde. Ich bitte um Hilfe, mir sind hier irgendwie die grundlegenden Mechanismen nicht ganz klar... Zitieren
flashpixx Geschrieben 11. August 2012 Geschrieben 11. August 2012 (bearbeitet) C/C++ - #include C-Programmierung: Eigener Header Funktionsprototyp In die Headerdateien, die includiert werden, kommen die Deklarationen, in die c Dateien die Implementationen. Wie man das nun konkret strukturiert kommt auf das Projekt an. Generell darf der include nur einmal stattfinden, wobei man dies mit entsprechenden defines verhindern kann. Ich würde, wenn es nicht zwingend erforderlich ist, zu C++ gehen, C ist im Sprachumfang enthalten, wobei man aber bei C++ globale Strukturen vermeiden kann (Singelton Pattern). Durch die Bildung von Klassen und Namespaces können hier strukturell viel bessere Kapselungen erfolgen, als unter C. Bearbeitet 11. August 2012 von flashpixx Zitieren
Markuhn Geschrieben 17. November 2013 Geschrieben 17. November 2013 Eine möglichkeit wäre: myclass.h #ifndef _MYCLASS_H_ #define _MYCLASS_H_ class myclass { .......... }; #endif // _MYCLASS_H_ myclass.c #include "myclass.h" .............. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.