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