1
#ifdef _XXXX
…程序段1…
#else
www.2cto.com
…程序段2…
#endif
這表明如果標識符_XXXX已被#define命令定義過則對程序段1進行編譯;否則對程序段2進行編譯。
2
#ifndef _XXXX
…程序段1…
#else
…程序段2…
#endif
這裡使用了#ifndef,表示的是if not def.當然是和#ifdef相反的狀況(如果沒有定義了標識符_XXXX,那麼執行程序段1,否則執行程序段2)。
3
#if 常量
…程序段1…
#elif<常量表達式2>
…程序段2…
#elif<常量表達式3>
…程序段3…
……
#else
…程序段2…
#endif
這裡表示,如果常量為真(非0,隨便什麼數字,只要不是0),就執行程序段1,否則執行程序段2.
例如:
1.
#if defined(_PC)&& defined(_SSE)
# ifdef DEBUG
# define __PC_VERIFY_ALIGNMENT__
# endif
# ifdef __PC_VERIFY_ALIGNMENT__
# define PC_VERIFY_ALIGN_ASSERT(ptr )\
{\
if( ( ( (INT)ptr )% 16)!= 0 )\
{\
debugf(NAME_Critical, TEXT("Unaligned PC data (0x%X)"),ptr );\
DebugBreak();\
}\
}
# else
# define PC_VERIFY_ALIGN_ASSERT(ptr )
# endif
#else
# define PC_VERIFY_ALIGN_ASSERT(ptr )
#endif
2.
#define ABC 3
main()
{
#if ABC>0
int a=1;
printf("%d\n",a);
#elif ABC<0
int b=-1;
printf("%d\n",b);
#else
int c=0;
printf("%d\n",c);
#endif
}
摘自 360知識網