Eignes Makfile



  • Danke für den Tip.
    Funktioniert leider aber immer noch nicht:

    g++ -Wall -o2 -c -o main.o main.cpp
    header.h:2: Warnung: »t« initialisiert und als »extern« deklariert
    g++ -Wall -o2 -c -o test.o test.cpp
    header.h:2: Warnung: »t« initialisiert und als »extern« deklariert
    g++ -o test main.o class.o
    test.o(.bss+0x0): multiple definition of `t'
    main.o(.bss+0x0): first defined here
    collect2: ld gab 1 als Ende-Status zurück
    make: *** [test] Fehler 1



  • Initialisierung aus dem Header ins Cppfile!



  • Ahhhh ok... ich doof.
    Ich bin ein schritt weiter:

    Es sieht jetzt so aus:

    vars.h

    extern int t;
    

    header.h

    #include <stdio.h>
    

    main.cpp

    #include "vars.h"
    #include "header.h"
    
    void test123();
    
    int main(int argc,char *argv[]){
            int t = 100;
            t = 200;
            test123();
            t = 1;
            printf("main() >> t = %i\n",t);
    }
    

    test.cpp

    #include "header.h"
    int t;
    
    void test123(){
            printf("test123() >> %i\n",t);
    }
    

    Das ganze lässt sich nun auch kompilieren.
    Wenn ich nun ein printf("%i",t); vor dem aufruf von test123() mache, bekomme ich auch den richtigen Wert bei test123() so bekomme ich aber 0.

    Danke schonmal im voraus!



  • das int t in der main-Funktion verdeckt das globale t und initialisiert es nicht!

    Sprich das t was test123 sieht ist ein anderes als das was in deiner main-Funktion existiert.



  • Dieser Thread wurde von Moderator/in kingruedi aus dem Forum Linux/Unix in das Forum ANSI C verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • AHHHH ok ok... ich bin blöd.
    Ich hab es Falsch rum gemacht, jetzt geht es.

    Also ich muss erst in meiner main.cpp das int t defenieren und in der anderen Datei mit extern int t wieder drauf zugreifen!

    Danke vielmals für eure Hilfe!!!!



  • Btw, globale Variablen sind in etwa so out wie Brittney Spears



  • Btw, globale Variablen sind in etwa so out wie Brittney Spears

    @Gast25250
    Ich will diese Variable auch nur als debug flag nutzen.... wie würdest du es alternativ machen?
    Ich bin immer für konstruktive Kritik zu haben. 🙂



  • setcookie schrieb:

    Btw, globale Variablen sind in etwa so out wie Brittney Spears

    @Gast25250
    Ich will diese Variable auch nur als debug flag nutzen.... wie würdest du es alternativ machen?
    Ich bin immer für konstruktive Kritik zu haben. 🙂

    na dann aber bitte "const" und sonst gibts für sowas nen Präprozessor, z.B. so:

    int main() {
    
        #if WE_DO_DEBUG
            cerr << "we do debug";
        #else
            cerr << "wo don't degug";
        #endif
    }
    

    compilieren mit -DWE_DO_DEBUG=1 oder mit -DWE_DO_DEBUG=0 und je nachdem gibt's diese oder jede Ausgabe.



  • Ok,

    ich wollte es aber so machen das ich den debug nicht beim compilieren sondern beim aufruf des Programms aktviere, so aller verbose mode.

    Ich dank dir aber für den Tip.


Anmelden zum Antworten