Variable & Konstanten aus Headerdatei mehrfach einbinden



  • Ich möchte nur sicher gehn das ich das richtig verstanden habe. Ich habe eine Headerdatei a.h

    const float pi=  3.14159;
    const int flaeche_A;
    

    und ich möchte diese sowohl in meiner main.cpp, als auch in einer weiteren Headerdatei b.h nutzen.

    b.h:

    #pragma once   //include guard 
    #include "a.h"
    //Kreis
    float flaecheBerechnen(float Radius){
        flaeche_A = pi*radius*radius;
        return flaeche_A;
    }
    

    Wenn ich jetzt als beispiel die Fläche auch in Main direkt in einem Rechteck berechnen will muss ich diese vorher mit extern deklarien und kann es dann verwenden...

    main(void){
    extern int flaeche_A; // Entspricht dem Wert und der Adress von dem flaeche_A aus a.h?
    
    //Rechteck
    flaeche_A = a*b;
    ....
    }
    

    habe ich das richtig erfasst? oder ist da irgenwo ein denkfehler drin?

    Danke
    //edit
    Okay also bei dem Machwerk bekomme ich einen Linkerfehler
    Ideen wie es richtig geht?



  • Da ist nicht nur ein Denkfehler drin.

    - man benutzt keine globalen Variablen (wenn global, dann nur Konstanten)
    - du hast flaeche_A const deklariert, änderst die Variable aber dann - was soll das?
    - warum willst du globale Konstanten in anderen Headern verwenden?

    In Headerdateien gehören ausschließlich Deklarationen und Typdefinitionen.
    #pragma once ist nicht Standard.



  • Okay danke erstmal,
    Include Guard ist tatsächlich nur in MS VC++ zulässig, alternativ gerne
    #ifndef a_h
    #define a_h

    Ich arbeite an einem Pascal original Projekt wo ich eine derartige struktur finde. Viele Konstanten und Variabelen die im gesamt Projekt benutzt werden. Das ganze Projekt baut zum teil auf diese Daten auf. Mehrfach einbindungen scheinen in pascal in ordnung zu gehen...



  • Sogut wie jeder brauchbare Compiler unterstützt #pragma once.



  • Sogut wie jeder brauchbare Compiler unterstützt goto.



  • Linus Torvalds hat gesagt das die lesbarkeit des Qt durch goto erhört wird... er sollte es wissen und jeder sollte selber entscheiden wie sauber sein QT sein sollte...
    Back to topic, bitte. Wenn ich ein Konstrukt finde durch die ich näher am Origanl (und damit an mein Vorgaben) dann nutz ich das.

    Gruß assa


  • Mod

    assaziel schrieb:

    Back to topic, bitte.

    Gibt's denn nach Wutz' Antwort noch etwas zu sagen? Weil dir eine Antwort nicht in den Kram passt, wird sie dadurch nicht falsch.



  • Back to topic, bitte.

    Gibt's denn nach Wutz' Antwort noch etwas zu sagen? Weil dir eine Antwort nicht in den Kram passt, wird sie dadurch nicht falsch.

    Ich glaube das war eher auf volkards produktive Antwort zurückzuführen...


Log in to reply