当前位置:编程学习 > C/C++ >>

C/C++的条件编译详解

 

1

 

#ifdef _XXXX

 

…程序段1…

 

#else

www.zzzyk.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知识网

补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,