您的位置:首页 > 编程语言 > C语言/C++

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

2011-11-22 20:51 176 查看
#ifdef _XXXX

…程序段1…

#else

…程序段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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息