2017-06-22 5 views
-3

Lasst uns sagen, ich habe dieses Programm:C/C++ Makrodefinition wählen, welches Programm ausgeführt werden soll

int main(){ 
    printf("program 1\n"); 
} 

int main(){ 
    printf("program 2\n"); 
} 

Wie kann ich ein Makro definieren, die Sie mir, welche das Netz wählen helfen würde laufen?

Idealerweise möchte ich etwas als 1 (oder 2) definieren und "Programm 1" (oder "Programm 2") sollte gedruckt werden.

+0

Das afaik nicht legal Code. 2 Netzleitungen zu haben ist fast definitiv ein Fehler. Kannst du nicht einfach ein Argument an den main übergeben, der angibt, welcher Teil des Programms ausgeführt werden soll? – Carcigenicate

+0

Was möchten Sie damit erreichen? 2 Netzleitungen zu haben ist ein Fehler und sollte 2 verschiedenen Programmen entsprechen. – Amadeus

+0

könnte ich, aber ich würde gerne wissen, ob das möglich ist. Es gibt einige interessante Makrotricks, die ich bisher gesehen habe. Ich tue das nur, um einige Codes zu testen, die dasselbe tun sollten – Daniel

Antwort

2

Verwenden Sie #if um die main() Funktionen.

#if WHICHMAIN == 1 
int main(){ 
    printf("program 1\n"); 
} 
#endif 

#if WHICHMAIN == 2 
int main(){ 
    printf("program 2\n"); 
} 
#endif 

Anschließend können Sie das Programm mit -DWHICHMAIN=1 oder -DWHICHMAIN=2 kompilieren den Wert des Makros angeben.

2

Dies ist, was ich normalerweise tue: Ich erstelle eine Konfigurationsdatei mit dem Namen my_config.h, und definieren Sie Makro in, zum Beispiel #define TEST_MODE.

Und der Code wie folgt aus:

#include "my_config.h" 
int main() { 
    #ifdef TEST_MODE 
    return test_main(); 
    #else 
    return real_main(); 
    #endif 
} 
+0

das ist in der Tat ein netter Trick – Daniel

Verwandte Themen