WIeder einmal eine Frage zu C++ multiple Definitions

Gast #3611399
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
Gast #3611407
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.
Gast #3611432
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren