本文共 1051 字,大约阅读时间需要 3 分钟。
预处理是C语言的一个重要功能, 它由预处理程序负责完成。当对一个源文件进行编译时, 系统自动引用预处理程序对源程序中的预处理部分作处理, 处理完毕自动进入对源程序的编译。 C语言提供了多种预处理功能,如宏定义、文件包含、 条件编译等。合理使用预处理功能可令程序便于阅读、修改、 移植和调试,也有利于模块化程序设计。
为了区分预处理指令和一般的C语句,所有预处理指令都以符号"#"开头,并且结尾不用分号(;) 预处理指令可以出现在程序的任何位置,它的作用范围是从它出现的位置到文件尾。习惯上我们尽可能将预处理指令写在源程序开头,这种情况下,它的作用范围就是整个源程序文件。 1.宏定义 #define
作用:编译时将源程序中的ABC替换成23,常用来定义常量。 带参数格式: #define AVG(a,b) (((a)+(b))/2)
作用:AVG(3,5),(((3)+(5))/2),输出结果为:4; 类似于函数,但不涉及储存空间分配,参数类型匹配,参数传递,返回值等问题,在编译预处理阶段执行,比函数效率更高。 使用习惯注意:宏一般用大写字母,以便与变量名区分开来; 使用带参数的宏注意将参数和计算结果用括号包起来,确保计算结果正确
2.条件编译 #if、#elif、#else、#endif
格式: #if 条件1code1#elif 条件2code2#else 条件3code3#endif
使用习惯注意:#if 和 #elif 后面的条件一般为宏而不是判断变量,因为条件编译是在编译之前做的判断,宏定义也是编译之前定义的,而变量是 在运行时才产生的、才有使用的意义; #if defined(),#if !defined()判断是否定义过某个宏; #ifdef 等同于#if defined(), #ifndef等同于#if !defined() ; 使用#include容易引起重复包含文件,降低编译效率,可结合条件编译#ifndef使用,避免重复包含(一般OC中使用#import解决该问题,这 里稍作了解就可以了) 转载地址:http://lczci.baihongyu.com/