2008年12月18日星期四

编译预处理

主要有三种:宏定义,文件包含,条件编译

先来看宏定义
#define 标识符 字符串

注意的几点是:
1宏定义不进行错误检查。
2宏定义不是C语句。
3带参数的宏要注意展开后的运算有限级,即注意括号在其中的运用。
4举个例子#define square(n)=(n)*(n)
int main()
{
int i=1,a;
a=(i++)*(i++);
printf("%d,%d",a,i);

return 0;
}
程序输出1,3,此时i由1增为3.

5使用宏,程序运行的较快,宏替换不占运行时间,只占编译时间;使用函数调用,占有空间较小,但是传送参数和返回值要花费一点时间。
6可以用#undef 标识符来终止宏定义的作用域。

文件包含
#include "文件名"
文件包含命令实际上是以指定文件的整个内容来替换#include命令行,所以要注意文件的包含顺序。

#include "文件名"表示先在引用被包含文件的源文件所在的目录中(当前目录)查找文件,如果查不到,再按系统指定的标准方式检索其它目录
#include<文件名>表示直接按系统指定的标准方式检索文件目录,这种方式一般适用于包含库函数的头文件,如#include。一般来说,用双引号比较保险,不会找不到。如果已经知道要包含的文件不在当前的子目录内,那么可以用<>形式。

条件编译

1.#ifdef 标识符
程序段1
#else
程序段2
#endif
2.#if 表达式
程序段1
#else
程序段2
#endif

没有评论:

发表评论