Hallo, ich probiere im Moment mit dem AVR-Studio rum und habe aktuell das ganze Programm in der main.c-Datei untergebracht. Das ist aber leider mit zunehmender Programmgröße ziemlich unübersichtlich geworden. Deshalb sollen wenn möglich einzelne Funktionsblöcke auf eigene C-Sheets (nennt man die so) ausgelagert werden. Nehmen wir z.B. an, in der main-Funktion befindet sich die Funktion schaltautomatismus_a(), die in ein externes Sheet ausgelagert werden soll und nur volatile Variablen enthält, die bereits deklariert wurden. Könnte man jetzt einfach im Projektordner eine Datei schaltautomatismus_a.c erstellen, sie mit #include "schaltautomatismus_a.c" einbinden und die Funktion dann komplett in diese neue C-Datei rüberkopieren und sie dann anschließend ganz normal aus der Hauptschleife der main-Funktion aufrufen?
Nils schrieb: > Deshalb sollen wenn möglich einzelne Funktionsblöcke auf eigene C-Sheets > (nennt man die so) ausgelagert werden. Ich habe diesen Begriff in meinen ca. 25 Jahren C-Programmierung noch nie gehört. > Nehmen wir z.B. an, in der main-Funktion befindet sich die Funktion > schaltautomatismus_a(), die in ein externes Sheet ausgelagert werden > soll und nur volatile Variablen enthält, die bereits deklariert wurden. Diese Beschreibung bekomme ich nicht geparst. Funktionen können keine anderen Funktionen enthalten, und was meinst du damit, dass die Funktion "nur volatile Variablen enthält, die bereits deklariert wurden"? Enthält sie nun die Variablen, oder kommen die von wo anders? Sind da wirklich nur Variablen drin? Was soll die Funktion dann? > Könnte man jetzt einfach im Projektordner eine Datei > schaltautomatismus_a.c erstellen, sie mit #include > "schaltautomatismus_a.c" einbinden und die Funktion dann komplett in > diese neue C-Datei rüberkopieren und sie dann anschließend ganz normal > aus der Hauptschleife der main-Funktion aufrufen? Wenn du Funktionen in eine eigene Datei auslagern willst, kannst du das bei kleinen Programmen theoretisch so machen. Allerdings ist das nicht der übliche Weg. Stattdessen fügt man eine weitere Datei "schaltautomatismus_a.h" dazu, in der die Funktion forward-deklariert wird. Diese wird dann per #include in beiden .c-Dateien eingebunden. Dann werden die beiden .c-Dateien getrennt von einander compilert und das Ergebnis dann zusammengelinkt.
:
Bearbeitet durch User
Nils schrieb: > Könnte man jetzt einfach im Projektordner eine Datei > schaltautomatismus_a.c erstellen, sie mit #include > "schaltautomatismus_a.c" einbinden Ja, aber nutz dafür *.h Dateien als "Interface". https://www.geeksforgeeks.org/c-c-include-directive-with-examples/ oder du hast einen guten Grund es so zu machen, z.B.: https://stackoverflow.com/questions/232693/including-one-c-source-file-in-another
Prima, vielen Dank für die Anregungen. Die h.-Datei ist dann wohl das richtige.
Der richtige Begriff wäre nicht sheet sondern 'Übersetzungseinheit' oder in englisch 'compilation unit'. Damit findet man auch Beschreibungen zur Anwendung: http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/c_getrennte_uebersetzung_de Dürfte auch in jedem C Einsteigerbuch erklärt sein.
Johannes S. schrieb: > Der richtige Begriff wäre nicht sheet sondern > 'Übersetzungseinheit' oder > in englisch 'compilation unit'. Etwas weniger schwülstig wäre „Datei“ oder „File“. Oliver
Oliver S. schrieb: > Johannes S. schrieb: >> Der richtige Begriff wäre nicht sheet sondern >> 'Übersetzungseinheit' oder >> in englisch 'compilation unit'. > > Etwas weniger schwülstig wäre „Datei“ oder „File“. Das ist aber etwas anderes.
Johannes S. schrieb: > Der richtige Begriff wäre nicht sheet sondern 'Übersetzungseinheit' oder > in englisch 'compilation unit Einfach nur Datei. C-Datei.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.