1. 条件编译
1.1 判断是否被定义
#define __DEBUG__ 1
// 如果定义了 __DEBUG__ 宏定义,才会进行接下来的编译
#ifdef __DEBUG__
// ==>#if !defined(__DEBUG__)
语句;
#endif
1.2 条件编译
#if 常量表达式(为真编译,为假,不编译)
语句;
#endif
1.3 多分支条件编译
#if 常量表达式
语句;
#elif 常量表达式
语句;
#elif 常量表达式
语句;
#else
语句;
#endif
1.4 嵌套指令
预处理指令可以进行嵌套。
pragma onec // 防止头文件被多次引用
#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.其它
2.1 头文件的包含
#include <filename>
//直接去库目录下查找
#include "filename"
//先查找当前工作目录下查找,然后去库目录查找
2.2 #error “…”
遇到#error便会产生一个编译错误。
2.3 assert断言
善用断言,头文件为 assert.h。
// 当 () 内的条件不成立时触发断言
assert(i == 1);
在debug版本中使用,release版本中自动清除,即断言会全部被清除。
相关内容可参考
《C语言深度解剖》