Ich habe ein Stück Code, die ich, wenn einer von zwei Makros enthalten sein sollVerwendung von logischen Operatoren mit Makros
#ifdef MACRO1 || MACRO2
void foo()
{
}
#endif
definiert Wie kann ich das erreichen in C?
Ich habe ein Stück Code, die ich, wenn einer von zwei Makros enthalten sein sollVerwendung von logischen Operatoren mit Makros
#ifdef MACRO1 || MACRO2
void foo()
{
}
#endif
definiert Wie kann ich das erreichen in C?
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
#if defined(Macro 1) + defined(Macro 2) == 1
<Code>
#endif
Hier ist die NICHT-Version bei Bedarf: [! Und eine Mini-Demo]
#if !defined(MACRO1) && !defined(MACRO2)
...
#endif
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
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