Hallo. Ich habe ein kleines Problem. Und zwar will ich ein Programm in mehrere files splitten. Nun pasiert aber folgendes. 1. komplettes Programm in einer Datei -> funktioniert 2. Headerdatei mit Prototypen hinzufügen -> funzt auch 3. neues c-file hinzufügen mit #include "myheader" jedoch ohne Inhalt -> geht nicht. Es kommen zahlreiche Fehlermeldungen mit: "multiple definition of ..." 4. neues c-file ohne Inhalt wird wieder gelöscht -> alles funktioniert wieder Könnt ihr mir bitte helfen? Werd noch verrückt. Danke schonmal
Ohne Sourcecode wird das nichts mit der Hilfe. Zeig mal die Version, die die Fehlermeldungen produziert. Oliver
Versuch mal etwas über den Unterschied zwischen Definition und Deklaration in Erfahrung zu bringen.
Ok. Danke. Hab mein Problem gefunden. Man muss in der Header die Globalen Variablen deklarieren. Darf sie jedoch nicht definieren, oder? Hab jetzt die Zuweisungen der Variablen in der Header enfernt, und siehe da, es klappt. Danke an alle die so schnell geantwortet haben.
Normalerweise musst du die .c Files garnicht extra hinzufügen. Du hast also eine Datei main.c und eine Datei ext.c die deine Funktionen enthält. Also bastelst du dir eine ext.h (gleicher Name ist wichtig) die die Definitionen etc. für die ext.c enthalten. Du musst dann nur in main.c und ect.c include ect.h machen, die Datei ect.c aber nicht extra noch dem Compiler mitteilen ... hoffe man versteht was ich sagen will ;)
Sozialer schrieb: > hoffe man versteht was ich sagen will Nein. Ein include von *.c Dateien macht man nicht. Und dem Projekt/make musst du schon mitteilen, welche Dateien zum Projekt gehören. Vielleicht macht deine IDE das automatisch, aber gegeben ist das nicht.
aber ich include ja zum Bespiel nur die die stdio.h ... und ich muss nicht gezielt angeben wo die source-file liegt ... wie macht der compiler das dann?
Sozialer schrieb: > aber ich include ja zum Bespiel nur die die stdio.h ... und ich muss > nicht gezielt angeben wo die source-file liegt ... wie macht der > compiler das dann? Der hat einen Standard-Suchpfad. Du unterscheidest ja auch:
1 | #include <stdio.h> |
und
1 | #include "irgendwas.h" |
Achte mal auf die Anführungszeichen.
Sozialer schrieb: > aber ich include ja zum Bespiel nur die die stdio.h ... und ich muss > nicht gezielt angeben wo die source-file liegt ... wie macht der > compiler das dann? Du meinst die dazugehörige *.c? Die ist in einer Liste in den Compilereinstellungen (als fertige Bibliothek, nicht als Source), die wird mit dazu gelinkt.
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.