{file.c“和” file.h“有什么区别?

时间:2019-02-17 11:26:19

标签: c

当我创建“ file.c”和“ file.h”时,我不知道是否必须在“ file.h”中编写“ file.c”函数的原型,然后编写这些函数在“ file.c”中没有主目录。我这样做是正确的吗?我只想确保我了解如何创建头文件,并且需要澄清。

2 个答案:

答案 0 :(得分:2)

编译器和其他软件通常不会在名称为“ .c”的文件和名称为“ .h”的文件之间强加区别。人类使用的惯例是:

  • file.c包含对象和函数的定义,最好是一小组相关的事物(例如,用于处理一种类型对象的例程的集合)。
  • file.h包含file.c中的对象和函数的声明,但仅包含我们希望其他源文件使用的那些对象和函数。

定义提供对象和功能的实际内容。编译器使用定义为这些对象和功能生成数据和代码。

声明将对象和函数的其他信息告知其他源文件,例如指定其类型,以便其他源文件能够使用对象和函数。

通常,file.c应包括{。{1}}的file.h。即使这似乎是多余的,因为file.c已经知道其定义的对象和功能,但它提供了错误检查:如果file.c包含file.h,并且file.h中的声明与定义不一致在file.c中,编译器将提供警告或错误消息。如果file.c不包含file.h,则编译器将无法执行此检查。

答案 1 :(得分:0)

要在.h /源文件之间共享declarations (not definitions),放在.c /头文件中。

只有.c个文件通过传递给编译器而直接 进行编译。通过.h将它们#include放入一个或多个.c文件中,.c文件也可以被编译,但可以间接

放置尽可能多的代码,包括在.c文件中的声明。仅当需要由另一个.h文件知道/使用的东西(属于.c文件)才能放置/移动到onkeyup文件中。