1.常见的条件编译指令
- #if 常量表达式 //... #endif // 常量表达式由预处理器求值。
- 如: #define __DEBUG__ 1 #if __DEBUG__ //.. #endif
2.多个分支的条件编译
#if 常量量表达式
//...
#elif 常量量表达式
//...
#else
//...
#endif
3.判断是否被定义
#if defined(symbol)
#ifdef symbol
#if !defined(symbol)#ifndef symbol
4.嵌套指令
#if defined(OS_UNIX)
#ifdef OPTION1
unix_version_option1();
#endif
#ifdef OPTION2
unix_version_option2();
#endif #elif defined(OS_MSDOS)
#ifdef OPTION2
msdos_version_option2();
#endif #endif
2.文件包含
- comm.h和comm.c是公共模块。
- test1.h和test1.c使用了公共模块。
- test2.h和test2.c使用了公共模块。
- test.h和test.c使用了test1模块和test2模块。
- 这样程序中就会出现两份comm.h的内容。
- 这样就造成了文件内容的重复。
解决方法:条件编译
- 每个头文件的开头写:
- #ifndef __TEST_H__
- #define __TEST_H__
- // 头文件的内容 #endif
- //__TEST_H__
- 就可以避免头文件的重复引入。