问题:

#include <stdio.h>
struct Student
{
    int id;
    char name[20];
};
void test(Student *s);
int main()
{
    Student a={1234,"shaofa"};
    test(&a);
    return 0;
}

这些写法存在以下问题:
1. 同一个类型,被重复写多次
2. 扩展性差,如果向Student中再添加一个成员,需要把每一处类型定义都修改一次
3. 定义可能不一致,编译器无法检查
每个CPP的编译就互相独立的,互相没有任何影响(compile阶段)

头文件:Header File,通常后缀名为.h
头文件的写法
(1) 后缀名一般为.h
(2)内容一般为几种:类型定义、函数声明、变量声明
用头文件解决问题:例如,添加一个Student.h

struct Student
{
    int id;
    char name[32];
};

头文件:Header File ,通常后缀名为.h
头文件的使用

#include “xxxx.h”

使用#include指令,加上文件名,文件名以双引号括起来

#include 的原理:
编译器在处理每个cpp之前,首先进行一个预处理:将所有的#include行替换成头文件的具体内容,形成一个中间文件,然后在对这个中间文件进行编译。
这个在编译之前的预处理过程,称为”预编译”过程。
注:如果头文件里还有#include,则反复替换,直到没有任何#include指令为止。

所以,一个源文件有没有语法错误,要在预处理之后才能决定

#include "Student.h"
#include "Student.h"//被替换两次,这是错误