何时不将C函数原型放入头文件

时间:2018-06-06 17:24:41

标签: c++ c function-prototypes

是否有理由将C / C ++函数原型放在头文件中,而不是将它们放在主.c / .cpp文件的顶部?

例如,我可以写一个dothis.c文件:

#include "funcs.h"

int main(int argc, char ** argv) {
   // some code
   int result = doThis();
   // more code

   return 0;
}

int doThis(void) {
   // code and return value
}

在我的funcs.h文件中,我写道:

#ifndef FUNCS_H
#define FUNCS_H

int doThis(void);

// more function prototypes

#endif // FUNCS_H

有没有理由为什么在.c / .cpp文件的顶部放置原型(假设有很多)可能更好?例如:

#include "funcs.h"

int doThis(void);

// more function prototypes

int main(int argc, char ** argv) {
   // some code
   int result = doThis();
   // more code

   return 0;
}

int doThis(void) {
   // code and return value
}

在第一种情况下,我觉得在单独的头文件中添加许多函数原型以及在逻辑上将声明与实现分开并使其更容易简明地查看主文件正在做什么将会有所帮助。

1 个答案:

答案 0 :(得分:2)

  

是否有理由将C / C ++函数原型放在头文件中,而不是将它们放在主.c / .cpp文件的顶部?

唯一对我有意义的时候是函数是其他函数的实现细节。当然,在这种情况下,我更喜欢使用static限定符使用文件范围函数在文件范围中定义它们,或者将它们放在特定于.cpp文件的命名空间中。

对于所有其他函数,我发现很难证明不将声明放在头文件中并#include将头文件放在使用这些函数的文件中以及定义函数的文件中。