【问题标题】:Should the header file containing function prototypes be included in file with definitions?包含函数原型的头文件是否应该包含在带有定义的文件中?
【发布时间】:2021-05-03 16:26:49
【问题描述】:

我试图找出最佳做法。

假设我有一个 C 函数

void myfunc(double);

我将这个函数原型存储在 myfunc.h 中

我在 myfunc.c 中编写函数定义


void myfunc(double p){
/*
 * Do work
 */
}

我应该在 myfunc.c 中#include "myfunc.h" 吗?

这不是必需的,但在我看来这是更好的做法。

【问题讨论】:

    标签: c header prototype function-definition


    【解决方案1】:

    是的,你应该这样做,因为它确保函数签名在声明和定义中是相同的。如果它们不匹配,程序将无法编译。在myfunc.c 中的任何其他包含文件之前包含myfunc.h 也是一个好主意。这样你就知道头文件是自包含的了。

    【讨论】:

      【解决方案2】:

      是的。 一千次是的!如果你不这样做,它仍然会“工作”,但是,如果你改变了函数定义而不是头文件中的原型(反之亦然),头文件将是 错误,它会导致编译器在其他任何地方强制执行错误的调用。这将完全破坏首先使用函数原型和头文件的全部意义。

      另见Compiler warning for function defined without prototype in scope?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-02-14
        • 1970-01-01
        • 1970-01-01
        • 2021-12-09
        • 2013-03-18
        • 2021-06-19
        • 2021-08-29
        相关资源
        最近更新 更多