大龙的博客

常用链接

统计

最新评论

C/C++的条件编译

C/C++的条件编译

关键词条件编译                                          

1
#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
}

posted on 2006-11-28 10:26 大龙 阅读(1724) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理