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
Gast
#2272546
Ohne Sourcecode wird das nichts mit der Hilfe. Zeig mal die Version, die die Fehlermeldungen produziert. Oliver
Gast
#2272549
>> "multiple definition of ..."
aber erst beim linken oder wie?
Probier mal die Suchfunktion! 'multiple definition of'
Hier sind mal die Dateien.
Gast
#2272570
Versuch mal etwas über den Unterschied zwischen Definition und Deklaration in Erfahrung zu bringen.
Vielleichth hilft auch das hier: http://www.wachtler.de/ck/16_Aufteilung_mehrere_Quell.html
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.
Gast
#2272586
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 ;)
Gast
#2272596
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.
Gast
#2272737
gut, wieder was gelernt ... wobei ich niemald ne .c includen würde ... ;)
Gast
#2272742
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?
Gast
#2272745
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 | |
und
1 | |
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.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.