首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将函数原型放在main或另一个函数中合法吗?

问将函数原型放在main或另一个函数中合法吗?
EN

Stack Overflow用户
提问于 2011-12-01 09:44:08
回答 2查看 3K关注 0票数 2

在C++语言中,将函数原型放在main或其他函数中合法吗?这是不是很糟糕的做法?为什么有人要把原型放在main里面呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-01 10:28:00

是的,这是合法的--这一点毫无疑问。不过,这通常是不可取的。

这样做不可取的一个原因是,该函数只在该特定函数中可用(声明的结果);同一文件中的其他函数不能使用该声明(但其他函数可能包含它们自己的函数声明-但随后您会重复自己,这不是一个好主意)。

此外,您还失去了交叉检查的主要好处。最好的方法是:

  • 如果函数是在同一源文件中定义的(且未在源文件外部使用),则将其作用域限制在该文件(static、匿名命名空间或相应的其他命名空间)中,并确保在使用该函数之前对其进行了定义或声明。
  • 如果该函数是在其他源文件中定义的,则应该有一个用于声明该函数的标头。将标头包括在定义函数的文件(以确保标头中的声明与定义一致)和使用该函数的文件中。

这样,如果您需要更改函数声明,您将有更少的地方来跟踪。如果在多个地方声明了函数,则必须一次更改所有声明。当然,对于足够彻底的更改(额外的参数或更少的参数),您将必须修改对函数的调用;对于其他更改(例如向参数添加const限定符,或从按值传递更改为按引用传递),您可能不需要更改源代码中的任何内容;简单的重新编译可能就足够了。

票数 2
EN

Stack Overflow用户

发布于 2011-12-01 09:47:12

显然,最好将原型放在它们自己的头中;放在任何函数之外:)

然而,这是合法的:

代码语言:javascript
复制
#include <stdio.h>

int
main (int argc, char *argv[])
{
  void foo ();

  foo ();
  return 0;
}

void foo ()
{
  printf ("Foo!\n");
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8335572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档