Mam kawałek kodu, który chcę to jeśli jeden z dwóch makr są zdefiniowaneKorzystanie z operatorów logicznych z makrami
#ifdef MACRO1 || MACRO2
void foo()
{
}
#endif
Jak mogę tego dokonać w C?
Mam kawałek kodu, który chcę to jeśli jeden z dwóch makr są zdefiniowaneKorzystanie z operatorów logicznych z makrami
#ifdef MACRO1 || MACRO2
void foo()
{
}
#endif
Jak mogę tego dokonać w C?
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
#if defined(Macro 1) + defined(Macro 2) == 1
<Code>
#endif
Tu wersja NIE razie potrzeby: [! A mini demo]
#if !defined(MACRO1) && !defined(MACRO2)
...
#endif
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
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