- 当我们调用一个函数时,编译器只需要掌握函数的声明;当使用一个类类型的对象时,类定义必须可用,但成员函数的定义不必已经出现,所以类定义和函数声明在头文件中,普通函数和成员函数定义在源文件中。
- 实例化一个模板时,需要掌握函数模板或类模板成员函数,模板头文件包含声明和定义。
以下以C文件为例,C++文件同理,编译时C文件使用gcc,C++文件使用g++。
将声明和实现都写在.h文件中
编译
此情况属于单文件编译,执行编译命令gcc -o mian mian.c.
将声明与实现分开写,声明写在.h文件中,实现写在.c文件中
注意在编译时不要忘了实现文件。此情况属于多文件编译。执行命令gcc test.c main.c -o main.
编译器先把源文件见main.c test.c独立编译为 main.o,test.o 目标文件,然后再把其中要用到的函数方法链接到 main.o来,最终打包成可执行文件main。