Forum: Compiler & IDEs mehrere source files


von Matthias G. (hugo1986)


Lesenswert?

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

von Oliver (Gast)


Lesenswert?

Ohne Sourcecode wird das nichts mit der Hilfe. Zeig mal die Version, die 
die Fehlermeldungen produziert.

Oliver

von martin (Gast)


Lesenswert?

>>  "multiple definition of ..."

aber erst beim linken oder wie?

von Ralf G. (ralg)


Lesenswert?

Probier mal die Suchfunktion!
'multiple definition of'

von Matthias G. (hugo1986)


Angehängte Dateien:

Lesenswert?

Hier sind mal die Dateien.

von Sven P. (Gast)


Lesenswert?

Versuch mal etwas über den Unterschied zwischen Definition und 
Deklaration in Erfahrung zu bringen.

von Klaus W. (mfgkw)


Lesenswert?


von Matthias G. (hugo1986)


Lesenswert?

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.

von Sozialer (Gast)


Lesenswert?

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 ;)

von DirkB (Gast)


Lesenswert?

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.

von Sozialer (Gast)


Lesenswert?

gut, wieder was gelernt ...
wobei ich niemald ne .c includen würde ... ;)

von Sozialer (Gast)


Lesenswert?

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?

von Sven P. (Gast)


Lesenswert?

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.

von Ralf G. (ralg)


Lesenswert?

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
Noch kein Account? Hier anmelden.