天天看點

#if/#if defined/#ifdef

#if #elif #else #endif

#if 條件1
    代碼段1
#elif 條件2
    代碼段2
...
#elif 條件n
    代碼段n
#else
    代碼段n+1
#endif      

如果#if後面的常量表達式為true,則編譯他所控制的代碼.

#define MY_VERSION 1

#if MY_VERSION == 1
        printf("my version 1\n");
#elif MY_VERSION == 2
        printf("my version 2\n");
#else
        printf("my version unknown\n");
#endif      

這裡因為MY_VERSION定義為1,那麼編譯後最終會列印”my version 1”.

# if defined(macro_name) #endif

#if defined(macro1) || (!defined(macro2) && defined(macro3))
    ...
#elif defined(macro1)
    ...
#else
    ...
#endif      

#ifdef #else #endif

#ifdef macro_name
    代碼段1
#else
    代碼段2
#endif      

參考文章