头文件中是否需要函数原型?

时间:2013-11-24 20:43:16

标签: c function header

我在robotc中编程,这只是带加载项的c编程(遵循所有c规则)。为了组织我的代码,我把我的子程序放在头文件中,并从我的主c文件中引用。我是否仍然可以从c文档中引用头文件中的方法,而无需在函数原型中添加函数原型 标题?

例如:

main1.c中的代码

    #include header1.h
    task main()
    {
      header_method();
    }

header1.h中的代码(无函数原型)

   header_method()
   {
   //do stuffs
   }

或者我必须这样做:

   void header_method();

   header_method()
   {
   //do stuffs
   }

原因是我只能在robotc中为我的机器人声明一定数量的全局变量。

1 个答案:

答案 0 :(得分:4)

您应该(几乎)永远不会将函数定义放在头文件中,就像您在header1.h中所做的一样。

头文件应包含函数声明(原型)。

(A" prototype"是一个函数声明,它指定参数的类型。有非原型函数声明不指定参数类型,但是它们已经过时了没有理由使用它们。)

函数定义(使用实现该函数的{ ... }代码)应该在.c个文件中。

每个.c文件对于它调用或定义的任何函数都应该有#include指令。

每个头文件都应受到include guards的多重包含保护。

这个想法是每个函数声明在每个翻译单元(你编译的每个源文件)中只出现一次,并且每个函数定义在整个计划中只出现一次。

如果您的函数只在一个.c文件中使用,则可以将其声明和定义放在同一个.c文件中(您应该将其定义为{{ 1}})。实际上,如果定义出现在任何调用之前,则可以省略单独的声明;定义本身就是一个宣言。

(定义为static的函数可能会使这个模型复杂化;我建议现在不要担心这个问题。)