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
}
…程序段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
}
相关文章推荐
- c/c++预处理过程详解(二)之条件编译及预定义的宏
- C++程序编译过程详解
- C++ 多线程4 详解条件变量
- C语言 条件编译详解
- 【Linux C/C++】 第02讲 HelloWorld程序编译流程详解
- java中模仿C++实现条件编译
- 条件编译#ifdef的妙用详解_透彻
- C/C++编译和链接过程详解 (重定向表,导出符号表,未解决符号表)
- C语言条件编译详解
- C++编译和链接过程的详解
- C/C++程序编译步骤详解
- c++模板函数声明定义分离编译错误详解
- 基于C++中常见编译错误的总结详解
- C语言 条件编译详解
- C/C++编译和链接过程详解 (重定向表,导出符号表,未解决符号表)
- 用环境变量控制c/c++的条件编译
- C++手动条件编译
- C/C++编译和链接过程详解 (重定向表,导出符号表,未解决符号表)
- C++条件编译
- C++ 条件编译