我熟悉 C 中关键字“static”的几种用法:
- 函数内的静态变量将在函数调用之间保持其值。
- 文件中的静态(全局)变量不能在声明它们的文件之外访问。
- 不能在声明它们的文件之外访问静态函数。
- 这种晦涩的用法是作为数组类型声明的一部分作为函数的参数。
第一次使用与实体的生命周期有关,第二次和第三次使用与实体的可见性有关,第四次使用与优化有关,我觉得奇怪的是,一个关键字会根据它的位置表现出如此不同的作用用来。在编译器中通常如何实现静态,是否有一些奇怪的细节可以让这个关键字轻松完成上述所有操作?“静态”提供的导致这些不同行为的底层功能是什么?