在C++语言中,将函数原型放在main或其他函数中合法吗?这是不是很糟糕的做法?为什么有人要把原型放在main里面呢?
发布于 2011-12-01 10:28:00
是的,这是合法的--这一点毫无疑问。不过,这通常是不可取的。
这样做不可取的一个原因是,该函数只在该特定函数中可用(声明的结果);同一文件中的其他函数不能使用该声明(但其他函数可能包含它们自己的函数声明-但随后您会重复自己,这不是一个好主意)。
此外,您还失去了交叉检查的主要好处。最好的方法是:
static、匿名命名空间或相应的其他命名空间)中,并确保在使用该函数之前对其进行了定义或声明。这样,如果您需要更改函数声明,您将有更少的地方来跟踪。如果在多个地方声明了函数,则必须一次更改所有声明。当然,对于足够彻底的更改(额外的参数或更少的参数),您将必须修改对函数的调用;对于其他更改(例如向参数添加const限定符,或从按值传递更改为按引用传递),您可能不需要更改源代码中的任何内容;简单的重新编译可能就足够了。
发布于 2011-12-01 09:47:12
显然,最好将原型放在它们自己的头中;放在任何函数之外:)
然而,这是合法的:
#include <stdio.h>
int
main (int argc, char *argv[])
{
void foo ();
foo ();
return 0;
}
void foo ()
{
printf ("Foo!\n");
}https://stackoverflow.com/questions/8335572
复制相似问题