原因主要是历史性的:作为事后的想法,C语言的设计联系起来了.在早期版本中,您可以根据需要重新声明全局变量,链接器将为您合并所有这些声明:
Ritchie的初衷是模仿C关于FORTRAN COMMON声明的规则,理论上任何可以处理FORTRAN的机器都可以为C做好准备.在公共块模型中,可以多次声明公共变量; 相同的声明由链接器合并.(来源)
单个声明的当前规则随后与extern关键字一起出现.此时,有一大段C代码足以使向后兼容性变得重要.这可能是语言设计者不再引入新关键字来处理链接,static而是重用的原因.