1.概念
头文件是扩展名为 .h 的文件,包含了 C 函数声明和宏定义,被多个源文件中引用共享。有两种类型的头文件:程序员编写的头文件和编译器自带的头文件。
在程序中要使用头文件,需要使用 C 预处理指令 #include 来引用它。stdio.h 头文件,它是编译器自带的头文件。
引用头文件相当于复制头文件的内容,但是我们不会直接在源文件中复制头文件的内容,因为这么做很容易出错,特别在程序是由多个源文件组成的时候.
头文件的写法,把所有的函数和全局变量都声明。声明使用#ifndef #define #endif, 避免重复导入。(入口函数main不能声明,这是一个例外, static修饰的全局变量不要声明)
static修饰全局变量的作用为:限制在当前文件中使用。
.c文件中要访问别的.c文件中的函数或全局变量, 就导入相应.h文件
2.引用头文件语法
使用预处理指令 #include 可以引用用户和系统头文件。它的形式有以下两种:
#include <file>
这种形式用于引用系统头文件。它在系统目录的标准列表中搜索名为 file 的文件。在编译源代码时,您可以通过 -I 选项把目录前置在该列表前。
#include "file"
3.引用<>与""的区别
#include < > 引用的是编译器的类库路径里面的头文件。
#include " " 引用的是你程序目录的相对路径中的头文件,如果在程序目录没有找到引用的头文件则到编译器的类库路径的目录下找该头文件。
4.头文件引用
如果一个头文件被引用两次,编译器会处理两次头文件的内容,这将产生错误。为了防止这种情况,标准的做法是把文件的整个内容放在条件编译语句中,如下:
#ifndef HEADER_FILE
#define HEADER_FILE
the entire header file file
#endif
自定义函数引用头文件myhead.h
/*===============================================
* 自定义函数:add.c
================================================*/
#include<stdio.h>
//.c文件中要访问别的.c文件中的函数或全局变量, 就导入相应.h文件
#include "./myhead.h"
int add(int a,int b){
return a+b;
}
void test(){
printf("tttt");
}
头文件myhead.h
/*===============================================
* 文件名称:myhead.h
* 描 述:创建自己的头文件,共享函数
================================================*/
#ifndef MYHEAD_H
#define MYHEAD_H
extern int add(int,int);
static void();
#endif
main方法引用add.c的函数
#include <stdio.h>
.c文件中要访问别的.c文件中的函数或全局变量, 就导入相应.h文件
#include "./myhead.h"
int main(){
printf("%d\n",add(3,4));
//static修饰函数,使得其他源文件不能引用此函数。
void();
return 0;
}
5.static
1.static修饰局部变量,延长了变量的生命周期,并且变量的地址将一直存在并保持不变。 |
---|
2.static修饰全局变量,使得其他源文件不能引用此全局变量。 |
3.static修饰函数,使得其他源文件不能引用此函数。 |