Bootstrap

预编译之条件编译指令#if /#ifdef/#if defined

1)#if

#if 条件表达式

程序段1

#endif

如果条件表达式为TRUE,则执行程序段1。

如:

#define LEN_MAX (3)
#define LenMax (6)
#if LEN_MAX < LenMax
#undef LEN_MAX
#define LEN_MAX LenMax
#endif

注意事项:
如果是下面这种使用方式,
#if TEST_DEFINE
#endif

则一定要 提前定义 TEST_DEFINE
#define TEST_DEFINE (1)
或者
#define TEST_DEFINE (0)

这里需要关心 宏定义 的Value。

其他使用方法:
#if (LEN_MAX < 4) || (LenMax >7)
#endif

也可以如下使用,
#define TEST_DEFINE_8  (0)
#ifdef TEST_DEFINE_8
程序段4  //程序段4 一定会执行,这与TEST_DEFINE_8 的Value 无关
#endif

2)#ifdef

#ifdef 标志符1(比如TEST_DEFINE)

程序段2

#endif


如果定义  标志符1(TEST_DEFINE),则执行 程序段2。

这里只管检测是否有 标识符1 的宏定义,不管它的Value 是什么。

注意事项:

#define TEST_DEFINE// 可以不定义,此标志符

#ifdef TEST_DEFINE

printf("Define!\n");

#else

printf("not define!\n");

#endif

其他使用方法:

#ifndef TEST_DEFINE_1

#undef TEST_DEFINE_2

#endif

3)#if defined

#if defined(标识符2)

程序段3

#endif

这与下面完全等价

#ifdef 标识符2

程序段3

#endif


其他使用方法:

#if defined(TEST_DEFINE_3) || defined(TEST_DEFINE_4)

#undef TEST_DEFINE_5

#endif


#if !defined(TEST_DEFINE_6) || defined(TEST_DEFINE_7)

#endif

;