在c语言中函数声明不是必须的,即使没有声明函数,gcc编译器也只是会提示警告。但是函数声明却是很有必要的。
那么函数声明到底有声明作用呢?
其实函数声明的作用是让编译器帮你检查你调用函数时有没有错误。比如参数的数量是否正确,如果调用函数时候少
传入一个参数,并且没有声明该函数,编译器无法知道你调用是否正确,只会提示一个警告。很多人会忽略警告,导
致最后程序运行时出现异常。
为什么如果不声明函数,编译器发现不了错误?
编译器在编译过程中依次生成对应源文件的可重定位目标文件(.o),每个源文件中调用的函数在链接前都是以符号的
形式体现在.o文件中。在编译过程中不会去检查某个函数的形式,因为函数参数是通过寄存器和压栈来处理的,直接把
函数翻译成符号,编译器是不知道关于函数参数的信息的,最后交给连接器把符号翻译成地址。所以链接的时候只要能
找到对应得符号就不会报错。