Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C语言中使用函数原型是一种不好的做法吗_C - Fatal编程技术网

在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样式定义
    -Wold样式定义
    (并非所有版本的GCC都支持所有这些)


因此,是的,在
main()

中声明函数是不好的,为什么需要…投票以重复方式关闭。复本有更好的答案。谢谢。然而,另一种方式是被轻视的还是好的?如果它编译,那么它就是好的,因为编译器永远是最终的评判者。但正如我所说的,我不会那样做,只是因为当你开始添加更多的函数,当你添加局部变量时,现在所有的东西都会在这个空间中结束。很公平,你是对的。我只是问,因为我有一个特殊的情况。感谢这个答案有点不完整,因为不清楚为什么您应该只有一个原型,但在副本的答案中更好地涵盖了这一点