首先,当一个程序有多个源文件(.c)时需要将这些.c文件都添加入工程中一起编译。在做用CVAVR的单片机实验时,CVAVR不会自动加入同目录的.C文件,我因此浪费大量时间在这个问题上。
切入正题,.h文件内写的是函数的声明和变量的声明。.C文件里是函数的定义和变量的定义。
一种比较方便的方法是让.h文件成为界面头文件。界面头文件的意义是只要include这个头文件就可以调用头文件爱呢里面所有申明过的函数和变量。然后,为了实现如a.h里的函数,我们在a.c这个源文件里完成对函数的定义。而在实现a.c的过程中又要include其他的头文件,这样多个.h文件就好像提供了相应的服务一样,你要用什么服务就include什么头文件。
全局变量的声明。在不是定义全局变量的其他文件里若是要访问全局变量,则要加上extern 关键字来声明它。表现全局量一次定义,多次声明的特性。
全局常量在声明的同时必须初始化。而且允许在不同的源程序分别定义它,使得每个源程序都能携带所要的全局常量。
在.h文件中利用namespace来命名名空间,用来区分多个.h中出现功能不同的同名函数。以a1::f()和a2::f()来调用不同的f()函数。
模块化。界面头文件.h的目的是简明的展现对应头文件.c所能提供的功能函数和数据服务。因此,在编程中,第一是要合理的分割程序。把能够反复利用的源程序建立在一个独立的文件里。之后将提供一个具体服务的多个文件组成一个模块。
namespace m1
{
#include"file1.h"
#include "file2.h"
}
并且将其命名为“module.h”这要就只要在调用该功能的.c文件里include "module.h" 并using namespace m1;
当然在面向对象的c++中,头文件一般包含class的内部数据和函数的声明。.c文件里写实现。