#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
}
C/C++的条件编译详解
原创
©著作权归作者所有:来自51CTO博客作者an_xiaohan的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:c语言零度学习
下一篇:关于MFC未来的感悟
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
C++最佳实践之工程编译
在大型c/c++工程开发中,往往会涉及多级CMakeLists.txt的调用,并且调用方式错综复杂。
文件路径 CMakeLists 编译 工程目录 -
【C++】详解命名空间
【C++】C++学习篇(1)——命名空间详细介绍C++中的命名空间,并深度剖析使用命名空间需要注意的三个方面……
命名空间 C++ 作用域 生命周期 -
C++/C条件编译
条件编译主要在两个地方常见:头文件(.h)&& 源文件(.cpp)先来介绍他们的作用在头文件中进行条
c++ #if #ifndef #ifdef -
C++条件编译 DEBUG
您可以只在调试时进行编译,调试开关可以使用一个宏来实现,如下所示:#ifdef DEBUG cerr <<"V
#endif #define #ifdef -
C/C++ #ifdef #else #endif 条件编译
ifdef else endif
ifdef else endif -
C++ 编译,运行过程 详解。
要更深入了解C++, 必须要知道一个程序从开
2d 预编译 目标文件 -
记录 | C++ #ifdef #endif 条件编译指令
记录 | C++ #ifdef #endif 条件编译指令
c++ #ifdef #endif 条件指令 编译指令 -
linux上的C/C++编译器gcc/egcs详解
-
编译器 linux gcc 优化 c