Probleme mit Variablen-Deklaration und Übergabe
-
Hi Leute,
ich hoffe mal wieder auf eure professionelle Hilfe!Ich habe in einer Datei abc.h eine Variable wie folgt deklariert:
#ifndef ABC_H #define ABC_H int x[100]; #endif //ABC_HNun habe ich eine Datei main.cpp, in der
#include "abc.h"steht und in der x deklariert wird.
Außerdem gibt es die Datei abc.cpp, in der ich x verwenden will.
Nun spuckt mir mein Compiler (dev-cpp) aber aus:
multiple definition of infixWoran liegt das?
Schon im Voraus Danke für eure Hilfe!!
Gruß
-
Ich meitne natürlich nicht "multiple deinition of infix", sondern "multiple definition of x"...
-
Du hast in zwei Modulen eine Definition eines
int[100]mit den Bezeichnerx. Der Linker gibt einen Fehler aus, da er nicht weiss, welche Definition er schliesslich benutzen soll.Die Lösung besteht darin, die Definition nur in einer Übersetzungseinheit vorzunehmen. Die Deklaration kannst du hingegen im Header behalten. Du kannst dem Compiler sagen, dass es sich nur um eine Deklaration handelt, indem du das Schlüsselwort
externeinsetzt.// abc.h - deklariere x extern int x[100]; // abc.cpp - definiere x #include "abc.h" int x[100]; // xyz.cpp - verwende x #include "abc.h" void func() { x[37] *= 4; }
-
Danke für die schnelle Hilfe, jetzt funktioniert es!
Gruß,
Ben-ny