Sowas gibt es, es nennt sich "Funktion"
Ich würde dir ein C-Tutorial oder Buch empfehlen.
Gruß, Yaro
Hallo zusammen,
ich such jetzt schon seit einigen Tagen nach einer Möglichkeit in C eine Art von Unterprogrammen zu erstellen.
Ich möchte zum Beispiel:
- ein Programm für: - Sensoren
- Motorsteuerung
- Motorrückmeldung
- Steuern von Lichteffekten
und das alles dann über ein "Hauptprogramm" aufrufen, gibt es hier eine Möglichkeit in C??
Ich würde mich über Rückmeldungen freuen, habe trotz Hilfe nichts gescheites gefunden.
Grüße
Mindhunter
Sowas gibt es, es nennt sich "Funktion"
Ich würde dir ein C-Tutorial oder Buch empfehlen.
Gruß, Yaro
Ja gibt es, nämlich ganz normale Funktionengibt es hier eine Möglichkeit in C??
So viele Treppen und so wenig Zeit!
Ich hab genug Lektüre zu dem Thema, trotzdem Danke.
Jetzt die Frage.. geht das dann nur über Header Dateien, oder gibt es dazu auch nochmal Alternativen...???
Du solltest dich evtl. nochmal der Lektüre zuwenden:
Headerdateien beinhalten einfach nur gemeinsame Definitionen (+ gelegentlich etwas Quelltext). Der Inhalt der Headerdateien wird dann während des Kompiliervorganges anstelle der passenden #include-Direktive eingefügt.
Die Funktionen selbst landen dann in ein oder mehreren .c-Dateien, die für sich jeweils einen Aufgabenbereich erfüllen sollten (Modularität). Die Funktionsprototypen in den Headerdateien haben nur den Zweck, den Compiler darüber zu informieren, welche Funktionen zur Verwendung verfügbar sind, da dieser den Inhalt der Quelltextdateien nur einzeln betrachtet. Wird eine Funktion verwendet, die er nicht kennt, gibt er (mindestens) eine Warnung aus.
Erst der Linker packt dann alle benötigten Funktionen aus den verschiedenen Modulen zusammen.
mfG
Markus
Vielleicht nochmal ein kurzes Beispiel...
das ist eine Funktionsdefinition, die irgendwo in einer .c Datei stehen kann:Aufrufen kann man diese Funktion dann z.B. so:Code:int Addiere(int a, int b) { return a + b; }Aber das geht nur in der gleichen .c Datei, und auch erst nach der Funktionsdefinition, da diese Funktion dem Compiler vorher einfach nicht bekannt ist.Code:int Ergebnis = Addiere(3, 5);
Abhilfe schafft eine Funktionsdeklaration (auch "Prototyp" genannt):
Wie du siehst enthält diese Deklaration selbst keinen Code, sondern dient nur als Hinweis nachdem Motto "pass auf, da gibt es eine Funktion mit dem Namen Addiere die zwei int Parameter hat, und einen int als Rückgabewert liefert". Setzt man diese Deklaration ganz an den Anfang der .c Datei, ist die Funktion Addiere in der gesamten Datei verfügbar (auch schon vor deren Definition).Code:int Addiere(int a, int b);
Möchte man in einer anderen .c Datei auf diese Funktion zugreifen reicht das aber noch nicht, in diesem Fall schreibt man den Prototyp nicht in die .c Datei, sondern in eine .h Datei die per #include in allen .c Dateien eingebunden wird, welche Zugriff auf die Funktion Addiere benötigen.
Dabei sollte man wissen, daß z.B. ein #include "abcdef.h" vom Präprozessor einfach durch den kompletten Text von abcdef.h ersetzt wird (bevor der Compiler die Datei verarbeitet). Das ganze ist also nichts weiter als ein automatisches Einfügen der Funktionsdeklarationen (und was sonst noch so in den .h Dateien steht), in allen .c Dateien die sie benötigen.
So viele Treppen und so wenig Zeit!
Alles klar, vielen Dank, genau das war meine Vermutung, aber ich war mir eifach nciht sicher ob es nur über die Prototypen in den Header geht, oder ob es auch eine andere Variante gibt, welche ich bisher einfach nciht gefunden habe.
Die einzige Frage die jetzt bleibt ist ob ich das richtig verstanden habe.
Also, ich schreib mir meine Prottypen und mache diese in verschieden Headerdateien für die verschiedenen Module. Anschließend habe ich dann eine einzige .C Datei die dann aus allen Headerdateien die einzelnene Programmteile zusammenbaut??
Oder gibt es noch die Variante dass mehrere .C Dateien vorhanden sind?? Falls ja wie werden diese dann verknüpft, genau das ist der Knackpunkt wo ich noch nicht durchsteige.
Vielen Dank für die vielen un vorallem Gut erklärten Antworten.
LG
Mindhunter
Natürlich gibt es mehrere .c Dateien, und die Headerdateien sind genau das was man braucht, um mehrere .c Dateien miteinander zu verbinden...
Angenommen du hast mehrere Funktionen zum Auswerten diverser Sensoren, dann kannst du diese Funktionen etwa in einer Datei Sensor.c definieren, und die Prototypen packst du entsprechend in eine Datei Sensor.h. Zusammen bilden diese dann ein Modul, dessen Funktionen du in anderen Modulen deines Projekts nutzen kannst, indem du sie mit einem #include "Sensor.h" dort bekannt machst.
Würde man den gesamten Code in nur eine .c Datei packen, bräuchte man prinzipiell auch keine Header, aber das wäre dann sehr unübersichtlich.
So viele Treppen und so wenig Zeit!
hi,
also angenommen du hast 3 source-files
unter linux
1) (main): sdlPathFinder304.cpp (gilt auch fuer c-files)
2) (sub1): sdlAstar304.cpp
3) (sub2): sdlSerialCom304.cpp
jetzt moechtest du eine ausfuehrbare Datei:
dass wird jetzt gemacht: mit einem einfachen script (unter linux)
-----------------------
also zuerst wird object-code erzeugt,Code:#!/bin/sh # name: compileSDLPathFinderScript304.sh # dd. 01.10.2010 # # with: main: sdlPathFinder304.cpp # sub1: sdlAstar304.cpp # sub2: sdlSerialCom304.cpp # echo "Compilation of sdlPathFinder304" g++ -Wall `sdl-config --cflags` -c sdlPathFinder304.cpp g++ -c sdlAstar304.cpp g++ -c sdlSerialCom304.cpp g++ -O2 -s `sdl-config --libs` -o sdlPathFinder304 sdlPathFinder304.o sdlAstar304.o sdlSerialCom304.o -lm echo "CompileSDLPathFinderScript304 is Done" exit 0
dann alles miteinander gelinkt.
selbstverstaendlich kann man das auch mit einem "makefile" machen
aber das wuerde zu weit fuehren.
ich wuerde Dir ein gutes C-buch empfehlen.
gruss nomad
Lesezeichen