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

Ben*_*Yeo 2 c header function

我正在用robotc编程,这只是带有附加程序的c编程(遵循所有c规则)。为了组织我的代码,我已将子例程放在头文件中并从我的主c文档进行引用。我是否仍可以引用c文档的头文件中的方法,而无需将函数原型放在头文件中?

例如:

main1.c中的代码

    #include header1.h
    task main()
    {
      header_method();
    }
Run Code Online (Sandbox Code Playgroud)

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

   header_method()
   {
   //do stuffs
   }
Run Code Online (Sandbox Code Playgroud)

还是我必须这样做:

   void header_method();

   header_method()
   {
   //do stuffs
   }
Run Code Online (Sandbox Code Playgroud)

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

Kei*_*son 6

您应该(几乎)永远不要像在中那样将函数定义放在头文件中header1.h

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

(“原型”是指定参数类型的函数声明。有一些非原型函数声明未指定参数类型,但是它们已经过时,因此没有理由使用它们。)

函数定义(带有实现该函数的{... }代码)应位于.c文件中。

每个.c文件都应具有#include针对其调用或定义的任何功能的指令。

并且每个头文件都应该通过包括保护项来防止多重包含。

这个想法是每个函数声明在每个翻译单元(您编译的每个源文件)中仅出现一次,而每个函数定义在整个程序中仅出现一次。

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

(定义为的函数inline会使该模型稍微复杂一些;我建议暂时不要为此担心。)