一、自定义头文件。
1、自定义头文件一定要写的吗?
不一定要写的,当声明的语句比较多的时候,就会将这些声明的语句写到头文件中。
2、 可以写到自定义头文件中的内容有哪些?
1)包含系统的头文件:#include <stdio.h>
2)宏定义:#define OK 0
3)自定义函数接口声明: int fun(int x,int y);
4)结构体声明:
struct data{
int a;
int b;
};
3、自定义头文件书写格式。
1)头文件文件名格式: xxx.h (my_head.h)
2)头文件内容开头必须写:
#ifndef _MY_HEAD_H_ -> 如果之前没有定义过_MY_HEAD_H_
#define _MY_HEAD_H_ -> 那么就定义_MY_HEAD_H_
3)可以明确列出需要包含的内容。
//系统头文件
//函数声明
//宏定义
//结构体声明
4)头文件结束后,必须写上这个
#endif
5)在.c文件写上
#include "my_head.h" 等价于 #include "./my_head.h" 表示在当前的目录下寻找my_head.h,如果找不到,那么就提示找不到头文件。
4、举例子。
参考: header_demo/
5、使用""与<>来包含头文件有什么区别?
双引号"":先在指定的路径下去寻找头文件,如果找不到,则会去系统中寻找头文件,如果找不到,则报错。
尖括号<>:直接去系统中寻找头文件,如果找不到,就报错。
1)使用尖括号来包含系统头文件。
#include <stdio.h>
int main(int argc,char *argv[])
{
printf("helloworld!\n");
return 0;
}
结果: 编译通过。 -> 直接去系统中寻找stdio.h,找到了!
2)使用尖括号来包含自定义的头文件。
假设当前目录下有一个头文件叫my_head.h,头文件内容:
-----------------------------
#ifndef _MY_HEAD_H_
#define _MY_HEAD_H_
#include <stdio.h>
#endif
------------------------------
#include <my_head.h>
int main(int argc,char *argv[])
{
printf("helloworld!\n");
return 0;
}
结果: 编译不通过,提示头文件找不到。 -> 直接去系统中寻找my_head.h,没找到!
解决方案:在编译时,添加-I来指定头文件的路径。
g