当我创建“ file.c”和“ file.h”时,我不知道是否必须在“ file.h”中编写“ file.c”函数的原型,然后在“ file.h”中编写函数.c”,但不包含main。我这样做是否正确?我只想确保我了解如何创建头文件,并且需要澄清。
最佳答案
编译器和其他软件通常不会在以“ .c”命名的文件和以“ .h”命名的文件之间强加区别。人类使用的约定是:
file.c包含对象和函数的定义,最好是一小组相关的事物(例如,用于处理一种类型对象的例程的集合)。
file.h包含file.c中的对象和函数的声明,但仅包含我们打算让其他源文件使用的那些对象和函数。
定义提供了对象和功能的实际内容。编译器使用定义为这些对象和功能生成数据和代码。
声明将对象和函数的其他信息告知其他源文件,例如指定其类型,以便其他源文件能够使用对象和函数。
通常,file.c应该在#include
中包含file.h。即使这似乎是多余的,因为file.c已经知道它定义的对象和功能,但它提供了错误检查:如果file.c包含file.h,并且file.h中的声明与定义不一致在file.c中,编译器将提供警告或错误消息。如果file.c不包括file.h,则编译器将无法执行此检查。