c语言之预处理指令

c语言的预处理指令 有 宏定义 ,文件包含 ,条件编译

宏定义分为两类

 1 不带参数的宏定义

2 带参数的宏定义

宏定义的格式

  一般形式 #define 宏名 字符串

作用:在编译预处理的时候,将宏名替换成右边的字符串

注意:宏名一般大写字母

宏名在编译预处理的时候不做编译检查,只做宏名字符串的简单替换,只有在编译的时候才会对宏名展开的字符串做编译检查

宏的作用域是从定义位置到文件结束,如果想要终止宏的作用域,可以使用 #undef宏指令

带参数的宏在展开的时候,只做简单的字符和参数替换,不做任何计算操作,所以一般用小括号包住字符串

宏和函数的区别

1 宏不涉及存储空间的分配,参数类型匹配,参数传递,返回值问题

函数在在程序运行时执行,宏在编译阶段执行,所以带参数的宏比函数更有执行效率

条件编译 只有满足某一条件才进行编译

格式 #if #elseif  #else #endif 这种格式进行条件编译判断

#include <> 中文件包含的引入形式,c语言库函数所在的目录下寻找文件

#include “” 现在当前源程序的目录下面查找,若找不到,再到操作系统的路径中查找,最后才到c语言库函数所在的头文件中查找

c语言指令允许嵌套包含,但是不需要递归包含  a.h包含b.h b.h包含c.h 但是a.h包含b.h b.h包含a.h这种是错误的

#include可能多次包含同一个文件,降低编译效率,为了防止多次包含同一个文件 在头文件中引入#ifndef __one__h__ #define __one__h_

 

 

你可能感兴趣的:(C)