头文件和源文件同名

Aak*_*ash 5 c header file

在嵌入式编程中源文件和头文件同名的目的是什么?

是不是可以在头文件中声明函数,然后在源文件中定义它们?

Example.h 有函数声明

void func();
Run Code Online (Sandbox Code Playgroud)

Example.c 有函数定义

void func()
{
 printf("Do Nothing");
} 
Run Code Online (Sandbox Code Playgroud)

Jab*_*ock 3

这很大程度上是一个品味问题。我发现在编写库时为主 .c 文件指定库的名称很方便,并且用户将 #include 的 .h 文件显然采用该名称以使用户轻松使用。

在非库源代码库中,有些人喜欢为每个 .c 文件创建一个 .h 文件,以声明该 .c 文件中的所有 extern。就我个人而言,我不喜欢这一点——它要求每个使用这些外部文件的文件都知道它们所在的文件,这使得分割大文件变得乏味,因为您需要更新 .h 文件和 #include 它的所有 .c 文件。我更喜欢使用覆盖代码区域的 .h 文件,而不是特定的文件;在我看来,在模块化不成问题的小型代码库中,单个 externs.h 文件适用于所有内容,效果很好。但这绝对是一个品味问题,有能力的工程师可能会不同意。

(但请注意,在 .h 文件中声明所有 extern,并拥有实例化该全局 #include 该 .h 文件的 .c 文件,是良好编码的基础。任何 extern 关键字都不应该出现在 .c 文件中,并且您应该在没有匹配的 extern 声明的情况下点亮编译器警告标志,以在全局定义上出错;这保证每个文件都同意 extern 符号的声明内容)