在C ++语言中,将函数原型放在main
或其他函数中是否合法?这是不好的做法吗?为什么有人会把原型放在main中?
答案 0 :(得分:5)
显然最好把原型放在自己的标题中;在任何功能之外:)
然而,这是合法的:
#include <stdio.h>
int
main (int argc, char *argv[])
{
void foo ();
foo ();
return 0;
}
void foo ()
{
printf ("Foo!\n");
}
答案 1 :(得分:2)
是的,这是合法的 - 毫无疑问。但这通常是不可取的。
不可取的一个原因是该函数仅在该特定函数中可用(作为该声明的结果);同一文件中的其他函数不能使用该声明(但其他函数可能包含它们自己的函数声明 - 但是你自己重复,这不是一个好主意。)
此外,您将失去交叉检查的主要好处。最好的方法是:
static
或匿名命名空间,或者在相应的其他命名空间中),以及确保在使用之前定义或声明它。这样,如果您需要更改函数声明,则可以减少要跟踪的位置。如果在多个位置声明了函数,则必须一次更改所有声明。当然,对于一个足够彻底的改变(额外的参数或更少的参数),你将不得不修改对函数的调用;对于其他更改(例如向参数添加const
限定符,或者从传递值更改为按引用传递),您可能不需要更改源中的任何内容;一个简单的重新编译就足够了。