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