假设我有以下用C ++实现的静态库:
int global = 0;
extern int foo(int i)
{
global += i;
return global;
}
在我的项目中按如下方式使用它:
#include <iostream>
extern int foo(int i);
int main()
{
std::cout << foo(1) << "\n";
std::cout << foo(1) << "\n";
std::cout << foo(1) << "\n";
}
此代码打印出来:
1
2
3
因此,很明显,全局变量“幸存”了函数调用,这与我在可执行文件中实现foo并多次调用该可执行文件不同,全局变量每次都将设置为零。
问题:全局变量在如上所述的静态库中存在多长时间?只要调用可执行文件的main
函数?甚至可以这样做吗?