首页 > 代码库 > 静态库里的静态变量

静态库里的静态变量

我们知道,在C语言里面的静态变量,在程序运行上只有一份拷贝, 在程序的任何一处改变其值后, 其他地方再调用会得到已经修改后的值, 因此可以当做一个全局变量来使用.

但是,当系统比较庞大时,经常会将一些功能代码编译成各种库来调用,这里的库有静态库和动态库. 

问题是, 当一个静态变量是定义在一个静态库里面时, 它是不是也只有一份拷贝呢,答案是不一定. 考虑这样的一个情况, 有一个静态库liba, 包含了静态变量x, 还有两个动态库dlib1, dlib2, 这两个动态库在创建时都包含了静态库liba, 因此静态变量x在两个动态库中分别有一份拷贝, 而且两个拷贝是独立的,互不影响的. 如果还是按照只有一份拷贝的想法去写程序, 就会出现莫名的问题. 


静态库里的静态变量