function原型在主要内部声明 – 最佳实践?

这是在主函数内部声明函数原型的好方法吗?

我正在看一个C教程,我认为已经过时了。 但是,他们在main中声明了函数原型。 我通常在主要之前宣布在外面。

#include  int main () { char myname [30]; int theage; int getage (); printf ("\nEnter your name:"); gets (myname); theage = getage (); printf("\n AGE = %d and NAME = %s", theage, myname); return 0; } int getage () { int myage; /* local to only getage() */ printf ("\nEnter your age: "); scanf ("%d",&myage); return (myage); } 

我个人会说“不”,原因如下:

  • 它使主要代码更长
  • 它可能会让一个新手感到困惑,认为该function是由main主导的
  • 在实际代码中,我通常会将函数放在不同的编译单元中并#include其头文件

我还会说,如果您开始在整个代码中使用显式声明,那么当您调用的函数突然改变其签名时,您肯定会得到未解析的外部因素。 如果在一个头文件中有一个声明,则只需在函数更改时更改一个声明。

但是,由于以下原因,我会说是的:如果您只是编写一个仅为一次性使用而编写的简单测试方法,即如果您想要快速测试某些内容然后立即丢弃该function。 然后,在您想要拨打电话之前,只需输入一个声明就可以了。

对于生产代码 – >不不不! 🙂

这不是一个好的风格。

要么在开始时声明本地函数原型,要么将它们移动到头文件。

函数原型(以及外部变量)几乎可以在c语言的任何地方声明。 然而,仅仅因为它可能不应该没有理由写意大利面风格C.

它使代码的可读性降低。 对我来说,这种做法是代码嗅觉的明显标志。

我认为这只是本教程的一个小例子…这就是你开始介绍函数时所做的事情……

我同意尼尔……

由于我没有在这个小马表演中跳过所需数量的篮球,我别无选择,只能发表这个评论作为答案。

请记住,这只是书中的一个片段,而不是人们在生产环境中看到的那种代码。 代码片段很好但不理想。 尼尔给出了最好的答案,所以我给了他+1。 如果你真的想知道它是如何在教程/教科书之外完成的,我会注意到他的第三点。

此外,我正在制作它们:“stdio.h”vs只是告诉预处理器在哪里搜索文件stdio.h的一种方式。 同样,在大多数情况下,您会看到stdio.h被<>而不是“”包围。 但是,正如Neil的第3点所提到的,你自己的头文件将被“”包围。