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

Pau*_*ard 22 c header include

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

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

myFunctions.c包含两个函数,一个名为showDate(),一个名为showScreen(),两个函数都可以从main.c调用,一切都很好.

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

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

  1. 在myFunctions.c中包含"myFunctions.h"

  2. 在myFunctions.h和myFunctions.c中声明Prototype
  3. 仅在myFunctions.c中声明原型

以上所有似乎都纠正了编译器错误并允许我从main.c和myFunctions.c中调用函数bot,但是我找不到一个确定的源是哪个是正确的过程.

S.L*_*ott 24

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

永远不要使用#2 - 永远不要声明任何东西.

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

  • 也许在决定#1和#3之前考虑可见性.如果需要从其他.c文件中调用此函数,请使用#1.如果在本地文件之外的任何地方不需要该功能,请使用#3.这样可以减少头文件中的混乱,并且可以将它们用作接口定义. (6认同)
  • 对.从其他地方调用的函数应该在.h文件中.内部函数应在.c文件中声明为static和prototyped.这为C提供了一些急需的模块化. (4认同)

小智 7

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

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