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_H
    

    Nun 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 infix
    

    Woran 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 Bezeichner x . 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 extern einsetzt.

    // 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


Anmelden zum Antworten