2012-12-04 19 views

Antwort

10

Neben #ifdef unterstützt der Vorprozessor die allgemeinere #if Anweisung; Tatsächlich ist #ifdef MACRO eine Abkürzung für #if defined(MACRO), wobei defined eine "Präprozessorfunktion" ist, die 1 zurückgibt, wenn das Makro definiert ist; so können Sie tun:

#if defined(MACRO1) || defined(MACRO2) 

void foo() 
{ 


} 

#endif 
+0

Was ist das Problem in unter Code? Was ist die Alternative für den Fall, dass eine solche Verwendung nicht korrekt ist? #define CUSTOM_METHOD 1 #define ARDUINO_METHOD 2 #define TIMER_DELAY_METHOD CUSTOM_METHOD # if definiert (TIMER_DELAY_METHOD! = CUSTOM_METHOD) || definiert (TIMER_DELAY_METHOD! = ARDUINO_METHOD) #error "No Timer Methode definiert" #endif // – Rajesh

+0

definiert Ich glaube, ich habe es und Code folgende scheint #define CUSTOM_METHOD 1 #define ARDUINO_METHOD 2 #define NONE zu arbeiten 3 #define TIMER_DELAY_METHOD NONE #if (TIMER_DELAY_METHOD! = CUSTOM_METHOD) && (TIMER_DELAY_METHOD! = ARDUINO_METHOD) #error "No Timer Methode definiert ist" #endif // definiert – Rajesh

4
#if defined(MACRO1) || defined(MACRO2) 
+0

(http://ideone.com/Swdum3) – Cornstalks

0
#if defined(Macro 1) + defined(Macro 2) == 1 
    <Code> 
    #endif 
2

Hier ist die NICHT-Version bei Bedarf: [! Und eine Mini-Demo]

#if !defined(MACRO1) && !defined(MACRO2) 
... 
#endif 
Verwandte Themen