为什么要包含当前.c文件的头文件?

时间:2015-01-03 14:17:05

标签: c

假设我有这样的代码

foo.h中

#pragma once
#ifndef _HEADER
#define _HEADER
//code
#endif

foo.c的

#include "header.h" 
//code

的main.c

#include "foo.h"

int main() {

    return 0
}

为什么要在foo.h中加入foo.c?没有它它仍然可以工作。

1 个答案:

答案 0 :(得分:3)

你是对的,你不必在模块的C文件中包含模块的头文件。

您可能希望这样做有几个原因。 (以下是非详尽的清单)。

  1. 正如其他人所说,它有助于确保头文件中的声明与C文件中的定义一致。当从另一个模块调用一些或所有例程时,这尤其重要。换句话说,这可以帮助减少错误。

  2. 它可以安全,快速地为您在文件中放置例程提供一点灵活性。当然,这可以通过C文件中的前向声明来实现,但是如果要从另一个模块调用例程,那么请保存额外的输入(以及可能的拼写错误)并使用头文件包含。你为什么要灵活性?它允许您按照您认为适合的可维护性和可读性对例程进行分组。

  3. 有助于保持包含文件列表更精简,更清晰。据推测,您的模块头文件将包含它需要的任何内容。因此,包含该头文件意味着您不必明确包含所有这些额外的头文件。经验告诉我,精益包含列表的模块通常具有较少的WTF时刻(以及对编译时间的积极影响非常小)。

  4. 希望这有帮助。