为啥K&R会把函数声明写到其他的函数里,而不是全局作用于

为什么K&R会把函数声明写到其他的函数里,而不是全局作用于?
我们写程序时,一般不都是把函数声明放到.h文件夹里么,对于简单的只有一两个函数的情况,也都是放在main函数的上面,而K&R放在main函数里面是什么用意呢?精确控制函数的作用域么?

#include <stdio.h>
#define MAXLINE 100
/* rudimentary calculator */
main()
{
double sum, atof(char []);//函数声明
char line[MAXLINE];
int getline(char line[], int max);
sum = 0;
while (getline(line, MAXLINE) > 0)
printf("\t%g\n", sum += atof(line));
return 0;
}

------解决方案--------------------
因为那还是500万年前的原始社会时代,k&r没想到这么多。

------解决方案--------------------
偷懒吧, 这个库函数是有头文件的.
当然, 包含头文件会浪费一点点编译时间. 
这样写作用域确实只在函数内, 但是这么小的程序根本没有限制作用域的必要, 何况还是库函数.
------解决方案--------------------
写在函数里能防止重名冲突。因为作用域的关系,函数外的声明会被函数内的而屏蔽
------解决方案--------------------
没有特殊原因, “旧社会代码”而已。 
------解决方案--------------------
一般就用一次的函数原型

编辑代码时候懒得移动好几行了, 在函数内声明原型, 也不用 include 头了,
只是让编译器知道原型的存在而已.

如果在好多函数内都出现对同一个函数的原型声明,
才是有问题.

------解决方案--------------------
伟人说得也不一定正确,时代在发展.
------解决方案--------------------
偷懒为啥K&R会把函数声明写到其他的函数里,而不是全局作用于
------解决方案--------------------
声明与定义的区别!只是告诉编译器这个函数已经存在的方式而已,已经淘汰这中做法了!
------解决方案--------------------
引用:
Quote: 引用:

偷懒吧, 这个库函数是有头文件的.
当然, 包含头文件会浪费一点点编译时间. 
这样写作用域确实只在函数内, 但是这么小的程序根本没有限制作用域的必要, 何况还是库函数.

这里的atof是作者编写的一个函数,并不是标准库中的那个函数

我的猜想是为了防止和标准库中的 atof() 冲突,C语言可没有重载(至少K&R时代没有)。
把 atof() 声明放在 main()中,就自动屏蔽了 main() 外的 atof() 。