在源文件中,用宏变量控制代码的条件编译,有如下四个编译控制语句:
#if
#if defined
#ifndef
#ifdef
四个常见编译控制的区别,联系,及用法:
#ifdef 与 #if defined() 是等价的。 适用于判断单个宏是否定义。
#if defined() 可以构成复杂的逻辑判断。
例如
#if defined(TEST1) || defined(TEST2)
xxxxxx
#endif
#if defined(AAA) && VERSION > 3
xxxxx
#endif
#if 后面跟条件表达式, 为真,执行编译,为假,不编译。
#if defined() 就是#if 的一种用法。
#ifndef 和 #if !defined() 等价,用来判断单个宏是否未定义
例如:
#if !defined YA_BUILD_FOR_DEVELOP && !defined YA_BUILD_FOR_TEST && !defined YA_BUILD_FOR_RELEASE && !defined YA_BUILD_FOR_PRERELEASE
#define YA_BUILD_FOR_DEVELOP
//#define YA_BUILD_FOR_TEST
//#define YA_BUILD_FOR_PRERELEASE
//#define YA_BUILD_FOR_HOTFIX
//#define YA_BUILD_FOR_RELEASE//该环境的优先级最高
#endif