Forum: Compiler & IDEs WIeder einmal eine Frage zu C++ multiple Definitions


von RIchi (Gast)


Lesenswert?

Ich habe eine unter1.d und eine unter1.c

in unter1.h definiere ich ...
int x;
#define macheetwas() x = (y)

in unter1.c
#include "unter1.h"

Wenn ich jetzt kompiliere alles wunderbar.

Wenn ich in der main() nun die unter1.h include
#include "unter1.h"

meckert der Compiler:
multiple definition of `x'

Wird vermutlich ein einfaches Problem sein.

MFG

: Verschoben durch User
von Fred (Gast)


Lesenswert?

Ja, was erwartest du auch? Deswegen schreibt man keine Definitionen 
(hier: int x;) in Headerdateien.

Aber das wird hier im Forum alle zwei Wochen bis zum Erbrechen 
durchgekaut. Such dir einfach einen der dreißig Millionen "multiple 
definitions"-Threads.

Egal welchen.

von tomske (Gast)


Lesenswert?

In Headern sollten Variablen nur deklariert werden, nicht definiert. Die 
Zeile
1
 int x;

im Header muss es lauten
1
 
2
 extern int x;

Die Definition von "x" kommt dann nach unter1.c

Sonst definiert jedes #include von unter1.h die Varriable x und der 
Linker ist entsprechend verwirrt.

von RIchi (Gast)


Lesenswert?

ich bedanke mich

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.