全局变量
文件的变量默认是全局变量,也就是可以在不同的文件修改。规则是规定不能有两个强符号(两个定义),但可能出现的情况是在一个文件定义并赋值,在另一个文件声明,并修改,编译是允许的,但会导致一些错误,尤其类型不一致的时候。
因此,编程规范是:
1. 尽量不用全局变量
2.非要用,用static本地全局变量
3. 用外部的加extern
4. 声明全局变量请赋初值
动态链接
动态链接有两种形式:
1. load-time linking 第一次加载的时候进行 libc.so 就是按照这种方式动态链接
2. run-time linking 已经运行后进行 (linux种,调用dlopen()接口实现)插件 plugin xxx.so
下图展示的加载时链接的情况
运行时的动态链接
#include<dlfcn.h>
int main(){
void* handle;
handle = dlopen("xxx.so"), RTLD_LAZY);
void (*func)();
func= dlsys(handle, "func");
func();
dlcose(handle);
}