包含函数原型的头文件是否应该包含在带有定义的文件中?
Should the header file containing function prototypes be included in file with definitions?
我试图找出最佳做法。
假设我有一个 C 函数
void myfunc(double);
我将这个函数原型存储在 myfunc.h
我把函数定义写在myfunc.c
void myfunc(double p){
/*
* Do work
*/
}
我应该在 myfunc.c 中 #include "myfunc.h" 吗?
这不是必需的,但在我看来这是更好的做法。
是的,你应该这样做,因为它确保函数签名在声明和定义中是相同的。如果它们不匹配,程序将无法编译。在 myfunc.c
中的任何其他包含文件之前包含 myfunc.h
也是一个好主意。这样你就会知道头文件是自包含的。
是的。一千次是的!如果你不这样做,它仍然会“工作”,但是,如果你改变了函数定义而不是头文件中的原型(反之亦然),头文件将是 错误的 ,它会导致编译器在其他地方执行错误的调用。这将完全破坏首先使用函数原型和头文件的全部意义。
另见
我试图找出最佳做法。
假设我有一个 C 函数
void myfunc(double);
我将这个函数原型存储在 myfunc.h
我把函数定义写在myfunc.c
void myfunc(double p){
/*
* Do work
*/
}
我应该在 myfunc.c 中 #include "myfunc.h" 吗?
这不是必需的,但在我看来这是更好的做法。
是的,你应该这样做,因为它确保函数签名在声明和定义中是相同的。如果它们不匹配,程序将无法编译。在 myfunc.c
中的任何其他包含文件之前包含 myfunc.h
也是一个好主意。这样你就会知道头文件是自包含的。
是的。一千次是的!如果你不这样做,它仍然会“工作”,但是,如果你改变了函数定义而不是头文件中的原型(反之亦然),头文件将是 错误的 ,它会导致编译器在其他地方执行错误的调用。这将完全破坏首先使用函数原型和头文件的全部意义。
另见