这是在主函数内部声明函数原型的好方法吗?
我正在看一个C教程,我认为已经过时了。但是,他们在main中声明了函数原型。我通常在主要之前宣布在外面。
#include <stdio.h>
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);
}
答案 0 :(得分:16)
我个人会说“不”,原因如下:
答案 1 :(得分:5)
我也会说“不”,如果你开始在整个代码中使用显式声明,当你调用的函数突然改变其签名时,你肯定会得到未解析的外部因素。如果在一个头文件中有一个声明,则只需在函数更改时更改一个声明。
但是,由于以下原因,我会说是的:如果您只是编写一个仅为一次性使用而编写的简单测试方法,即如果您想要快速测试某些内容,然后立即丢弃该功能。然后,只要在你想要打电话之前就输入一个声明就可以了。
对于生产代码 - &gt;不不不 ! :)
答案 2 :(得分:4)
这不是一种好的风格。
在开头声明本地函数原型或将它们移动到头文件。
函数原型(以及外部变量)几乎可以在c语言的任何地方声明。然而,仅仅因为它可能不应该没有理由写出意大利面风格C.
它使代码的可读性降低。对我来说,这种做法是代码嗅觉的明显标志。
答案 3 :(得分:1)
我认为这只是本教程的一个小例子......这就是你开始介绍函数时所做的......
我同意尼尔......
答案 4 :(得分:1)
由于我没有在这个小马表演中跳过所需数量的篮球,我别无选择,只能将此评论作为答案发布。
请记住,这只是一本书的摘录,而不是人们在生产环境中看到的那种代码。代码片段很好但不理想。尼尔给出了最好的答案,所以我给了他+1。如果你真的想知道它是如何在教程/教科书之外完成的,我会注意到他的第三点。
此外,我正在制作它们:“stdio.h”vs只是告诉预处理器在哪里搜索文件stdio.h的一种方式。同样,在大多数情况下,您会看到stdio.h被&lt;&gt;包围代替 ””。但是,正如Neil的第3点所提到的,你自己的头文件将被“”包围。