C头文件 - 正确的包含方式

时间:2009-07-29 12:33:37

标签: c include header

我正在尝试自学C编程,我在Windows XP下使用DevC ++作为我的IDE。我对调用自己的头文件的正确方法感到有些困惑。

我有一个名为main.c的主源文件和一个名为myFunctions.c的函数的单独文件,我在main.c中使用'include“myFunctions.h”包含所有函数原型驻留在此头文件中。

myFunctions.c包含两个名为showDate()的函数和一个名为showScreen()的函数,这两个函数都可以从main.c调用,并且很好。

当我试图从showScreen()中调用showDate()并且在编译/链接期间,我的问题就开始了,因为我没有在myFunctions.c中为showDate()创建原型。

我想知道的是我需要做以下哪些事情?

  1. 在myFunctions.c中包含“myFunctions.h”

  2. 在myFunctions.h和myFunctions.c
  3. 中声明Prototype
  4. 仅在myFunctions.c中声明原型
  5. 所有上述内容似乎都纠正了编译器错误,并允许我从main.c和myFunctions.c中调用函数bot,但我找不到确定来源的正确来源。

5 个答案:

答案 0 :(得分:24)

在许多地方使用#1 - #include。

永远不要使用#2 - 永远不要声明任何内容。

很少使用#3 - 在.c文件中声明某些内容,就好像你永远不会重复使用它一样。

答案 1 :(得分:7)

头文件应包含原型。然后将其包含在使用原型的所有位置,包括包含函数定义的.c文件。

BTW DecC ++不再被积极开发 - 您应该考虑切换到Code::Blocks

答案 2 :(得分:3)

绝对是第一个选择。

答案 3 :(得分:2)

您应该选择选项1.或者命令myfunctions.c,以便被调用函数的定义发生在调用它的函数之前。通过在文件中包含标头,您可以让编译器捕获声明和定义之间的任何不匹配。

答案 4 :(得分:1)

正如其他人已经说过的那样,你应该使用第一个选项。一般规则是,函数原型驻留在.h文件中,以及它们在.c文件中的实现。