请注意,此问题最初于2009年发布,在批准C ++ 11之前和在
auto
彻底改变关键字的含义之前。提供的答案仅与C ++ 03的含义(auto
即指定的存储类)有关,而不与C ++ 11的含义(auto
即自动类型推断)有关。如果您正在寻找有关何时使用C ++ 11的建议auto
,则该问题与该问题无关。
在最长的时间内,我认为没有理由static
在C中使用该关键字,因为在块范围之外声明的变量是隐式全局的。然后,我发现将变量声明为static
块作用域内将赋予它永久的持续时间,而在块作用域之外(在程序作用域内)声明该变量将为其赋予文件作用域(只能在该编译单元中访问)。
因此,这仅给我留下了一个我可能尚未完全理解的auto
关键字:关键字。除了“局部变量”之外,它还有其他含义吗?不管您想在任何地方使用它,对您而言,隐式所做的任何事情吗?auto
变量在程序范围内如何表现?static auto
文件范围中的变量是什么?除了完整性之外,此关键字还有其他用途吗?