最新文章请访问:SHIZHZ's Blogshttps://shizhz.me/
本文是对《K&R》第4章《Functions and Program Structure》的一个摘要。
1. 函数定义范式为:
return-type fun-name(arguments declarations)
{
declarations and statements
}
在函数定义中如果没有指定返回值,则默认为int型,通过-Wall编译器会显示相应的警告信息:
fun() {}
单独编译时:
$ gcc -c fun.c -Wall
fun.c:1:1: 警告:返回类型默认为‘int’ [-Wreturn-type]
fun.c: 在函数‘fun’中:
fun.c:1:1: 警告:在有返回值的函数中,控制流程到达函数尾 [-Wreturn-type]
-c选项告诉gcc不调用连接器(linker),只生成可重定位的目标文件,该文件格式为ELF,内容可通过readelf或objdump等二进制工具读取,更多二进制工具可参考GNU提供的binutils;-Wall选项告诉gcc显示所有警告信息。
2. 函数的声明、定义及调用:
函数的声明与定义需要一致,编译器通过检查函数名、返回值、参数列表来检查函数声明与定义的一致性,对于隐式声明的函数则不检查参数列表。函数调用前进行显示声明是好的编程习惯。
如果没有显示声明,则调用处包含了对函数的一个隐式声明,隐式声明的返回值为int,参数任意。如果该函数定义在同一个源文件中,则编译器会对返回值进行