static修饰的变量存储在全局区。那问题来了,不同函数中static修饰的同名变量是怎么区分的?
做一个测试,在同一个源文件里实现两个函数,在函数里添加一个同名的,static修饰的,int类型的variable。
将源文件编译成静态库,注意不要加入-O等优化参数,避免把变量优化掉(加入main函数编译成可执行文件也是一样的,不限定静态库)
用nm查看静态库的符号
可以看到编译器自动在变量后面添加了一个数字,有点类似c++的多态。但这个数字是怎么来的还不清楚,不同编译器的处理方法是否一样也不清楚,有了解的小伙伴欢迎留言指出。