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

Eine eigene Frage? Dieser Thread ist über 4 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.