1、#include<reg52.h> 中已经定义了sfr P1=0x90;那么在main( )主函数之前的P1=2;自然是再次定义。而在main( )之内是P1变量使用,而不是定义。
2、C语言规定:一个函数A在使用(被调用)之前,必须事先定义清楚。如果你的函数A定义式放在了主函数main( )之后,就不符合“事先定义清楚”的规定,因为你在main中使用它——函数void initial(void); 之前没有定义,因此这就需要在主函数main()之前加一个“函数A原型说明”以符合“必须事先向编译器说明清楚函数的类型”这个规定,因为编译器需要在使用函数A之前预先为函数A参数/变量分配内存等。 容易理解,如果你把函数A的定义式(不是原型说明式)前移,放在主函数main()之前,那就不需要“函数A原型说明”了。因为它符合调用前“事先定义清楚”的编译器规则。
|