AVR-Studio: Funktionen in eigene C-Sheets auslagern

Gast #6973720
Lesenswert?

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?
#6973817
Lesenswert?

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.
#6973849
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren