在C语言中使用函数原型是一种不好的做法吗
比如说在C语言中使用函数原型是一种不好的做法吗,c,C,比如说 int main () { void funct (...); return 0; } void funct (...) { } 这在C语言中是不是很糟糕?因为它编译得很好。谢谢对不起,我在使用手机时出现了缩进我会这样做: // forward declaration of the function void some_function(); int main () { // call the function some_function();
int main () {
void funct (...);
return 0;
}
void funct (...) {
}
这在C语言中是不是很糟糕?因为它编译得很好。谢谢对不起,我在使用手机时出现了缩进我会这样做:
// forward declaration of the function
void some_function();
int main ()
{
// call the function
some_function();
.....
return 0;
}
// define the function
void some_function()
{
.....
}
我会说这很糟糕,是的。这只会让事情变得更复杂,更难遵循,没有真正的好处。将原型放在函数调用/定义上方的顶层,或者如果希望它是公共的,则放在头文件中。将函数原型放在
main()
(或任何其他函数)中的缺点是,必须在使用它的任何其他函数中重新声明它,这意味着你失去了检查的单点
在使用函数之前,应该在作用域中有一个原型声明
一个函数应该只有一个原型声明。(而且,由于显然不清楚为什么一个函数应该只有一个原型,或者任何类型的声明都应该出现一次,原因是在“真实代码”中,如果有多个声明,您就无法承受所遇到的多个维护问题。如果有重复,您需要进行一些更改g、 如果有不止一个声明,那么您还有很多工作要做。这就是所谓的干原则-不要重复自己;它也被称为点原则-单点真理。可维护的代码避免重复!)
- 如果函数是静态的,则可以在使用之前定义函数,也可以在文件顶部声明函数
- 如果该函数在外部可见,则表示该函数将在其定义的文件外部使用。应该有一个声明函数的头,并且该头应该在定义它的源文件和使用它的所有源文件中使用
- 您可以让GCC使用
-Wmissing原型执行这些规则;我也使用
和-Wstrict原型
和-Wold样式定义
(并非所有版本的GCC都支持所有这些)-Wold样式定义
因此,是的,在
main()
中声明函数是不好的,为什么需要…投票以重复方式关闭。复本有更好的答案。谢谢。然而,另一种方式是被轻视的还是好的?如果它编译,那么它就是好的,因为编译器永远是最终的评判者。但正如我所说的,我不会那样做,只是因为当你开始添加更多的函数,当你添加局部变量时,现在所有的东西都会在这个空间中结束。很公平,你是对的。我只是问,因为我有一个特殊的情况。感谢这个答案有点不完整,因为不清楚为什么您应该只有一个原型,但在副本的答案中更好地涵盖了这一点