2012-12-04 13 views

Odpowiedz

10

Poza #ifdef, preprocesor podtrzymuje bardziej ogólny dyspozycję #if; faktycznie, #ifdef MACRO jest skrótem dla #if defined(MACRO), gdzie defined jest "funkcją preprocesora", która zwraca 1, jeśli makro jest zdefiniowane; tak, można to zrobić:

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

void foo() 
{ 


} 

#endif 
+0

Co jest problem w poniższym kodzie? Jaka jest alternatywa w przypadku, gdy takie użycie jest nieprawidłowe? #define CUSTOM_METHOD 1 #define ARDUINO_METHOD 2 #define TIMER_DELAY_METHOD CUSTOM_METHOD #if określone (TIMER_DELAY_METHOD! = CUSTOM_METHOD) || zdefiniowana (TIMER_DELAY_METHOD! = ARDUINO_METHOD) #error "Nie sposób czasowy definiuje" #endif // zdefiniowane – Rajesh

+0

Myślę, że mam to i następujący kod wydaje się działać #define CUSTOM_METHOD 1 #define ARDUINO_METHOD 2 #define BRAK 3 #define TIMER_DELAY_METHOD NIE #if (TIMER_DELAY_METHOD! = CUSTOM_METHOD) && (TIMER_DELAY_METHOD! = ARDUINO_METHOD) #error "Nie sposób czasowy definiuje" #endif // zdefiniowano – 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

Tu wersja NIE razie potrzeby: [! A mini demo]

#if !defined(MACRO1) && !defined(MACRO2) 
... 
#endif 
Powiązane problemy