对于C语言的执行过程大家都是知道的, 1、编辑 2、编译 3、链接 4、执行 。不过存在一些问题,总结如下:
在编译的过程的时候,主要是对语法、词法的检测,代码优化,分配全局变量、静态变量内存等操作。
还有就是会检测函数是否定义,如果没有定义,则检测是否声明。如果没有定义,也声明就会抱错。
在链接的过程中,主要是:解析其他文件中的函数引用或其他引用; 解析库函数。
情况如下:
调用一个函数,定义存在,声明存在,可以编译,可以链接
调用一个函数, 定义存在,没有声明,可以编译,可以链接
调用一个函数, 定义不存在,声明存在,可以编译,无法链接
调用一个函数, 定义不存在,没有声明,无法编译
也就是只要有函数定义就可以编译,可以链接。