.Header Dateien mehrmals #include ohne "multiple definition"?

Gast #4390684
Guten Tag,
die Frage die jetzt kommt wird sehr "Basic" sein.

Wenn ich mit .h Dateien arbeite. Dann habe ich in einer dieser z.B. eine 
Variable.

Jetzt möchte ich diese Variable in main.c und ext_main.c nutzen. Also ->
1
#include "meine.h"
in beiden.

Dies führt unweigerlich zum Fehler "multiple definitions in xxx.o".

Darf ich Fragen wie der professionelle Umsetzer so etwas umsetzt :D?
Vielen Dank u. mfG.
Rudii
Gast #4390686
Rudii schrieb:
> Darf ich Fragen wie der professionelle Umsetzer so etwas umsetzt :D?

in der Header Datei sollte alle variabel mit extern drin stehen. Dann 
passiert das auch nicht.

Variablen selber sind in C(pp) Dateien "zu Hause".
#4390688
Der Trick liegt in dem Unterschied zwischen "Definition" und 
"Deklaration". Ersteres ist in C nur einmal erlaubt und Letzteres 
beliebig oft.

Der Trick ist jetzt die (globale) Variable innerhalb einer C-Datei zu 
definieren (=Speicher anzulegen). In den Header-Dateien deklarierst du 
die Variable nur noch mit dem Schlüsselwort "extern".

Gruß
Dennis

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 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.