Compile- oder Runtime-Debug?



  • Hallo,

    Ich habe da mal eine Frage... aber der Titel sagt ja im Grunde schon alles aus^^

    Für ein größeres Projekt möchte ich wissen, ob es effektiver ist, die Debugging-Funktionen per #define oder doch lieber mit einer konstanten Variable zu machen.

    Also so in der Art:

    ...header...
    
    #define __DEBUG__
    
    int main()
    {
        ...
        #ifdef __DEBUG__
            std::cerr << "FEHLER!" << std::endl
        #endif
        ...
    }
    

    Oder doch lieber:

    ...header...
    const bool debug = TRUE;
    
    int main()
    {
        ...
        if(debug)
            std::cerr << "FEHLER!" << std::endl
        ...
    }
    


  • Wenn man den Profis hier im Forum glauben kann, macht es keinen Unterschied. Gute Compiler sollten zur Compile-Time feststehende Konstanten erkennen, ersetzen und damit den sowieso nicht ausgeführten Code auch gleich entfernen (habe den Thread mit einer ellenlangen Diskussion dazu erst gestern gelesen - finde ihn aber nicht mehr -.-).
    Ich habe mich davon selbst noch nicht überzeugt und würde so oder so Präprozessordirektiven vorziehen 😃 (denn dafür sind sie imo da, und darauf kann ich mich 100% verlassen).

    Gruss,
    DeSoVoDaMu



  • The-Kenny schrieb:

    ...
    Für ein größeres Projekt möchte ich wissen, ob es effektiver ist, die Debugging-Funktionen per #define oder doch lieber mit einer konstanten Variable zu machen....

    Ich würde immer Konstante( Variable)n vorziehen. Gerade bei "großen Projekten" zählt nämlich die Entwicklungs-, Debugging- und Wartungszeit ganz stark mit in die "Efizienz" (ich vermute mal, dass Du "effizienter" meinst, wil beide Methoden nämlich 100% effektiv sind ... also zu gewünschten Effekt führen) 😉
    Und da haben Dinge, die der Compiler genauso sieht wie Du eindeutig die Nase vorn (sogar bis zum Bauch) !

    Gruß,

    Simon2.


Anmelden zum Antworten