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