Bestimmte Code-Teile nicht kompilieren



  • Hallo,

    ich möchte in meinem C++ Programm auf Linux bestimmte Code-Teile in bestimmten Fällen nicht kompilieren.

    Mein Ansatz ist das mit #ifdef/#ifndef zu machen. Ich meine mal gesehen zu haben, dass man über den Präprozessor des Compilers (bei mir g++ über autotools) die Konstanten auf die man checkt mitgeben kann.

    Wie mache ich das am besten?

    Danke!

    Bis dann



  • stanmc schrieb:

    Hallo,

    ich möchte in meinem C++ Programm auf Linux bestimmte Code-Teile in bestimmten Fällen nicht kompilieren.

    Mein Ansatz ist das mit #ifdef/#ifndef zu machen. Ich meine mal gesehen zu haben, dass man über den Präprozessor des Compilers (bei mir g++ über autotools) die Konstanten auf die man checkt mitgeben kann.

    Wie mache ich das am besten?

    Gar nicht!

    Lagere den Platform-abhängigen Code in eigene Quell-Dateien aus und entscheide
    im "Build-Prozess", welche Dateien kompiliert werden.

    Ansonsten kannst du mit

    g++ -DMEIN_SYMBOL ...
    

    und im Code mit

    #ifdef MEIN_SYMBOL
    //...
    #endif
    

    Teile ausblenden



  • bladerunner10 schrieb:

    stanmc schrieb:

    Wie mache ich das am besten?

    Gar nicht!
    [...]
    und im Code mit

    #ifdef MEIN_SYMBOL
    //...
    #endif
    

    Teile ausblenden

    Wieso widersprichst du dir selber?

    Anstatt mitgeben bei den Compiler-Optionen kannst du es direkt in den Code schreiben:

    #define SYMBOL
    // ...
    // ...
    #ifdef SYMBOL
      // normaler Code
    #else
      // alternativer Code
    #endif
    

    Entsprechend kannst du es mit #ifndef tun, wenn du abfragst, ob ein Präprozessor-Symbol nicht definiert ist.



  • Nexus schrieb:

    bladerunner10 schrieb:

    stanmc schrieb:

    Wie mache ich das am besten?

    Gar nicht!
    [...]
    und im Code mit

    #ifdef MEIN_SYMBOL
    //...
    #endif
    

    Teile ausblenden

    Wieso widersprichst du dir selber?

    Ich meinte: Die eleganteste Lösung wäre die, mit den einzelnen platformabhängigen Dateien. Wenn er aber darauf besteht, kann man "#ifdef..." und "g++ -D..." machen.

    Siehe auch hier:
    http://www.chris-lott.org/resources/cstyle/ifdefs.pdf



  • Nexus schrieb:

    Anstatt mitgeben bei den Compiler-Optionen kannst du es direkt in den Code schreiben

    Ich möchte es aber über die Compiler-Optionen machen. Hast du da mal einen Hinweis für mich, wie ich das mache?

    Danke schonmal!



  • Hallo,

    wurde doch schon geschrieben, und steht hier:

    http://gcc.gnu.org/onlinedocs/gcc-4.3.0/gcc/Preprocessor-Options.html#Preprocessor-Options

    MfG,

    Probe-Nutzer



  • --- hier stand nur dummes zeug ---



  • Ich danke euch allen! Funktioniert!



  • [quote]
    ich möchte in meinem C++ Programm auf Linux bestimmte Code-Teile in bestimmten Fällen nicht kompilieren.
    [/qoute]

    also im msvc gibts so was von haus aus:

    #ifdef _WIN32
    //tudies
    #else
    //tus nicht - vll was anderes...
    #endif
    

    Wenn du bei deinem Compiler ma suchst findest du bestimmt auch die Symbole, die er für so was verwendet...

    weitere befehle:

    #define symbol
    #undef symbol
    #ifdef symbol
    #if (symbol == wert) //wie man auch nen "normales" if verwenden kann
    #else //wie immer
    #endif //wenn das if (und ggf. else) zu ende ist...
    

    bb


Anmelden zum Antworten