define / bedingte kompilierung



  • Hallo!

    möchte vollegendes realisieren:
    1.cpp

    ...
    #ifdef _DEBUG_
    cout<<"DEBUG-INFO";
    #endif
    ...
    

    2.cpp

    ...
    #ifdef _DEBUG_
    cout<<"DEBUG-INFO";
    #endif
    ...
    

    main.cpp

    ...
    #define _DEBUG_
    ...
    

    aber irgendwoe geht das nicht!😕 wenn ich in der main

    #define _DEBUG_
    

    mache ist ihm das total wurscht!
    was mache ich falsch bzw. wie mache ichs richtig???

    vielen dank schon mal!



  • Vielleicht wäre es einfacher dir zu antworten wenn du sagst, was du überhaupt machen willst. Ein paar Zeilen Code und "geht nicht" sind jedenfalls keine hinreichende Fehlerbeschreibung.



  • du musst das

    #define _DEBUG_
    

    shon in irgend einem header definieren der in allen .cpp files eingebunden wird, sonst sieht es der compiler nicht.
    Kurt



  • ja also ich möchte so ne art DEBUG LEVEL haben. man kann doch bei vielen programmen einstellen wieviel informationen sie im fehlerfall ausgeben sollen. sowas in der richtung will ich haben. nur das das nicht fest zum programm gehören soll, sondern eben nur dann einkompiliert werden soll, wenn in der main() bzw. der datei in der diese steht DEBUG=true oder so...??



  • ZuK schrieb:

    du musst das

    #define _DEBUG_
    

    shon in irgend einem header definieren der in allen .cpp files eingebunden wird, sonst sieht es der compiler nicht.
    Kurt

    okay danke .:)

    und wie würde ich sowas "professionell" lösen -> siehe posting eins drüber

    also ich meine jetzt ohne #define



  • Bedingte Kompilierung geht aber nur über #defines.
    Kurt



  • klar, meinte dann jetzt aber nicht bedingte, sondern feste kompilierung. das frage ich jetzt halt nur der interesse halber 🙂



  • sn0b schrieb:

    ZuK schrieb:

    du musst das

    #define _DEBUG_
    

    shon in irgend einem header definieren der in allen .cpp files eingebunden wird, sonst sieht es der compiler nicht.
    Kurt

    okay danke .:)

    und wie würde ich sowas "professionell" lösen -> siehe posting eins drüber

    also ich meine jetzt ohne #define

    Eventuell mit Exceptions?

    Desweiteren Defines sollten nicht mit _ und einem Großbuchstaben beginnen (afaik ist das sogar offiziel verboten), da diese Namen für den Compiler vorbehalten sind.

    Caipi



  • Du könntest dir eine singleton Debug Klasse bauen. ( oder auch eine globale variable verwenden )
    Kurt



  • @caipi

    Eventuell mit Exceptions?

    hä? wie denn das?

    Desweiteren Defines sollten nicht mit _ und einem Großbuchstaben beginnen (afaik ist das sogar offiziel verboten), da diese Namen für den Compiler vorbehalten sind.

    wußt ich gar nich, aber hast glaub recht, immer halt 2 _ is dann daoch korrekt oder? (__DEBUG__)

    @kurt

    Du könntest dir eine singleton Debug Klasse bauen. ( oder auch eine globale variable verwenden )

    hört sich gut an, haste vielleicht n bisl beispielcode??



  • Caipi schrieb:

    sn0b schrieb:

    ZuK schrieb:

    du musst das

    #define _DEBUG_
    

    shon in irgend einem header definieren der in allen .cpp files eingebunden wird, sonst sieht es der compiler nicht.
    Kurt

    okay danke .:)

    und wie würde ich sowas "professionell" lösen -> siehe posting eins drüber

    also ich meine jetzt ohne #define

    Eventuell mit Exceptions?

    Desweiteren Defines sollten nicht mit _ und einem Großbuchstaben beginnen (afaik ist das sogar offiziel verboten), da diese Namen für den Compiler vorbehalten sind.

    Caipi

    hab das mit _ jetzt nochmal nachgeguckt und in meinem c++ buch "C++ lernen und professionell anwenden" von prinz steht da nix von!! Und es gibt bei __ compilerfehler!!!


Anmelden zum Antworten