程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C/C++的條件編譯詳解

C/C++的條件編譯詳解

編輯:C++入門知識

 

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知識網

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved