Headerdatei richtig inkludieren???



  • Ich habe eine Headerdatei language.h erstellt, in der ich alle Variablen definiere z.B. char* text="Das ist mein Programm";
    Ich habe dort alle Variablen definiert um ganz einfach die Werte (bzw. die Sprache) ändern zu können! Dadurch möchte ich mein Programm zweisprachig machen!
    Mein gesamtes C++ Projekt besteht nun aber aus ca. zehn *.cpp Dateien, wo diese Variablen verwendet werden.
    Ich habe zuerst im main.cpp die Headerdatei language.h einfach mit

    #include <language.h>

    inkludiert. Dabei ergab sich aber das Problem, dass in den anderen *.cpp Dateien die Variablen als undefiniert gemeldet wurden!
    Dann habe ich language.h in allen *.cpp inkludiert. Das brachte aber wiederum die Fehlermeldung, dass die Variablen mehrfach definiert sind!
    Ich habe auch bereits in die Headerfile die Präprozessoranweisung

    #ifndef _LANGUAGE_H
    #define _LANGUAGE_H
    //Variablendefinitionen
    #endif

    eingefügt. Was aber auch nichts brachte!
    Kann mir jemand sagen wie ich die Headerdatei language.h in meinen *.cpp Dateien einbinden kann, damit es auch funktioniert?



  • in einer headerdatei darfst du keine variablen definieren.
    setzte vor die variablen z.b. ein extern, und definiere sie dann in einer cpp-datei; gib uns ein beispiel von dem, was genau nicht klappt, und dir wird geholfen.



  • Ich kann leider kein Beispiel geben. Es geht im Prinzip einach darum, die gesamten Variablen in eine eigene Datei zu geben, damit diese einfach geändert werden können (andere Sprache) und der Text nicht als "Text" im C++-Code steht.
    Das Problem dabei ist aber das das inkludiern dieser Datei mit den ganzen Variablendefinitionen in den ca. 10 *.cpp Datien nicht funktioniert!



  • //variablen.h
    //deklarationen
    extern int array[];
    extern bool moo;
    extern long long blub;
    extern const char *goo;
    
    //var_definitionen.cpp
    #include "variablen.h"
    int array[10] = {0,2,3,0,3};
    bool moo = true;
    long long blub = 34*366*23;
    const char *goo = "Hello World!";
    
    //main.cpp
    #include "variablen.h"
    #include <iostream>
    
    int main () {
      std::cout << goo << '\n';
    }
    

    so klappt's zb.
    aber um andere sprachen zu haben, bietet c++ von sich aus zb locales an. ist aber ein schwieriges kapitel.



  • Ja genau so stelle ich mir das vor..aber....
    ich hab jetzt mehrere *.cpp Dateien, die gleichwertig zum main sind, in denen ich aber variablen.h auch inkludiern möchte!
    z.B. so:

    //output.cpp 
    #include "variablen.h" 
    #include <iostream> 
    
    int main () { 
      std::cout << goo << '\n'; 
    }
    

    und da liegt das Problem. Dabei erhalte ich die Fehlermeldung, das in dem Fall goo mehrfach definert ist! Und wenn ich im output.cpp das #include "variablen.h" weglasse kommt die Fehlermeldung, daß die Variable (hier goo) nicht definiert ist



  • Ok so, wie es oben beschrieben ist funktionierts. Habe nur das "extern" übersehen! Vielen DANK!!!!



  • Wenn die Strings konstant sind (also falls du das Programm für jede Sprache neu kompilieren willst), kannst du auch "const char* const" als Datentyp zu nehmen. Dann brauchst du kein extern und kannst die Strings direkt in die language.h schreiben.


Anmelden zum Antworten