“函数定义”是指对函数功能的确立,包括指定函数名,函数
值类型、
形参类型、
函数体等,它是一个完整的、独立的函数单位。而“函数声明”的作用则是把函数的名字、函数类型以及形参类型、个数和顺序通知
编译系统,以便在调用该函数时系统按此进行对照检查(例如函数名是否正确,实参与形参的类型和个数是否一致)。
就像变量可以在
头文件中声明,而在
源文件中定义一样,函数也可以在头文件中声明,在源文件中定义。
把函数声明直接放在每个使用该函数的源文件中是大多数新手习惯并喜爱的方式,这是合法的。但是这种方式古板且易出错。
解决方法就是把函数的声明放在头文件中,这样可以确保对于指定函数其所有声明保持一致。如果函数接口发生变化,则只需修改其唯一声明即可。
将提供函数声明的头
文件包含在定义该函数的源文件中,可使编译器能检查该函数的定义和声明是否一致。特别地,如果函数定义和函数声明的
形参列表一致,但返回类型不一致,编译器会发出警告或出错信息来指出差异。
函数的声明与函数的定义形式上十分相似,但是二者有着本质上的不同。声明是不开辟内存的,仅仅告诉
编译器,要声明的部分存在,要预留一点空间。定义则需要开辟内存。