【问题标题】:Same name for Header file and Source File头文件和源文件同名
【发布时间】:2018-05-20 15:15:39
【问题描述】:

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

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

Example.h 有函数声明

void func();

Example.c 有函数定义

void func()
{
 printf("Do Nothing");
} 

【问题讨论】:

  • “同名”是什么意思?您是指实际文件还是文件中的符号?是的,头文件通常用于函数声明,而它们的定义位于单独的源文件中。这是头文件的目的之一,声明事物,因此您可以将其包含在多个源文件中,并且在包含头文件的任何地方都有相同的声明。
  • 你的意思是.h.c 扩展名except 相同吗?这不是强制性的,但这是一个非常好的主意。这意味着您可以轻松地将头文件关联为源代码文件中非静态项的声明。它并不特定于嵌入式编程。
  • “文件扩展名”(.c、.h、.bla、...)文件名的一部分。

标签: c file header


【解决方案1】:

这主要是口味问题。我发现在编写库时给主 .c 文件提供库的名称很方便,而用户将 #include 的 .h 文件显然采用该名称以方便用户使用。

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

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

【讨论】:

    猜你喜欢
    • 2017-06-29
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多