globale deklarationen



  • Hallo,

    wie kann ich ein Variable global deklarieren, wenn ich mehrere .cpp und .h dateien binde.

    Wenn ich global deklariere dann schreibe ich es z.B. so:

    #include<iostream>
    using namespace std;
    
    // Global
    int a = 0;
    
    void test();
    
    void main()
    {
      test();
      cout << a;
    }
    
    void test()
    {
      a = 34;
    }
    

    Wenn ich jetzt nun die test-funktion in eine andere datei schreibe (z.b. test.cpp) dann bekomme ich dann bei der haupt cpp datei das a nicht deklariert ist.

    Wie mache ich das?

    Gruss,
    Cyrill



  • hast du die andere cpp/h auch includeiert? aber man soll Globale deklarationen eigentlich meiden 🙂

    und dein prog sollte so aussehen:

    #include<iostream>
    using namespace std;
    
    // Global
    int a = 0;
    void test();
    
    void test()
    {
    a = 34;
    } 
    
    int main()
    {
    test();
    cout << a;
    }
    


  • Jepp die header-datei der zugehörigen cpp-datei habe ich includiert. Die Funktion kann ich ja aufrufen.

    Ich habe eine Funktion geschrieben die die grösse des Konsolenfensters bestimmt. Diese habe ich in die Datei "settings.h und settings.cpp" geschrieben. In die Headerdatei die Funktionsprototypen. Nun wollte ich eine seperate Datei erzeugen die dann das Fenster mit einer anderen Hintergrundfarbe füllt. Nun wollte ich auf die Werte der Fensterbreite und -höhe zugreifen. Aber mir ist ja ebenen beim schreiben eingefallen ich könnte ja die grösse wieder abfragen in dem ich die Funktion "GetConsoleScreenBufferInfo" verwende.

    Mal probieren.



  • Dann poste doch mal den gesamten code des programms damit wir dir helfen können 🙂



  • Ha, haut hin. Wunderbar der Hintergrund wurde mit einem Fabigen ASCII Zeichen (175) gefüllt.

    Will ein typisches dos Menü basteln.

    Mein Code sieht glaube ich ein wenig zu peinlich aus um es zu posten ;o)



  • Wenn du eine globale Variable in eine cpp schreibst und aus anderen cpps verwenden willst, dann schreib in einen Header "extern int a;" (wenn du in der cpp "int a;" hast).

    Aber prinzipiell solltest du solche globalen Variablen meiden.



  • So mein Menü wäre fertig.

    Jetzt habe ich ein Problem. Ich wollte es so machen, das man die Menüzeilen per Pfeiltasten wählen kann.

    Gibt es eine Funktion mit der ich die gedrückten Tasten abfragen kann?

    Ich hatte mal was gelesen mit getkey() dazu finde ich leider nichts.



  • globale variablen sind unfein.. versuch sie perspektivisch zu meiden.

    hier ein wenig nicht standard c++ code

    #include<stdio.h>
    #include<conio.h>
    
    int main(){
        unsigned char chr;
    
        do{
            chr=getch();
            if ((chr==224) || (chr==0)){
               chr=getch();
    
               switch(chr){
               case 75:
                    printf("<-");
                    break;
               case 77:
                    printf("->");
                    break;
               case 83:
                    printf("ENTF");
                    break;
               case 82:
                    printf("EINF");
                    break;
               case 80:
                    printf("pfeil nach unten");
                    break;
               case 79:
                    printf("ENDE");
                    break;
               case 72:
                    printf("pfeil nach oben");
                    break;
               }
            }
        }while(true);
    }
    

    und drücken einer taste: mit

    kbhit() //conio.h
    


  • mit dem getch() funktioniert wunderbar, nur wenn ich jetzt noch eine Laufschrift im Menü habe pausiert das getch() mein Programm solange bis eine Taste gedrückt wird.



  • nimm kbhit dazu.. mach noch eine weitere schleife drum, und lass getch nur zum zuge kommen, wenn kbhit einen keyboardhit gekriegt hat.

    so long



  • klappt wunderbar. Danke dir.


Anmelden zum Antworten