程序的主体目标是数据,函数是实现的过程是加工是算法。使用全局变量的函数,会影响函数的可移植性。
函数原型的主要作用之一是作参数的静态类型检测。编译器是以单文件为单位进行编译,所以别的文件在哪定义都一定要做声明,在编译之前先做预编译的展开。
函数原声明表有函数声明表,函数编译时遇到一个会去查一个,不匹配会报warning/err。函数可以重复声明,但不能重复定义,函数定义也自带声明,但考虑要到顺序问题。
函数的源码由于不能够进行公开以及零散等的原因无法进行商业化,固有了库的定义:动态链接库、静态链接库。
静态链接库:只编译不链接,生成.o目标文件,再使用ar归档生成.a归档文件,提供.a和.h头文件,使用时候链接器干活生成程序,作用—保护版权。
动态链接库:比静态链接库更高效,静态库是在链接生成程序时使用,但是太占内存空间。
但是在静态情况下会出现重复高占情况。
但动态库就是去系统文件中的动态库中找,无论用多少次都是去第一次加载的地方去执行,不用重复展开,减小程序大小。
在GCC编译动态库时,往往会添加-lxxx,如-lm和-L。