注意这个问题最初是在 2009 年发布的,在 C++11 被批准之前并且在
auto
关键字的含义发生巨大变化之前。提供的答案仅与 C++03 的含义有关auto
——即指定的存储类——而不是 C++11 的含义auto
——即自动类型推导。如果您正在寻找有关何时使用 C++11 的建议auto
,则此问题与该问题无关。
很长一段时间以来,我认为没有理由static
在 C 中使用关键字,因为在块范围之外声明的变量是隐式全局的。然后我发现将变量声明为static
在块范围内会赋予它永久的持续时间,而在块范围之外(在程序范围内)声明它会给它文件范围(只能在该编译单元中访问)。
所以这给我留下了一个我(也许)还没有完全理解的关键字:auto
关键字。除了“局部变量”之外,它还有其他含义吗?无论您想在哪里使用它,它所做的任何事情都没有为您隐含地完成?auto
变量在程序范围内的行为如何?文件范围内的static auto
变量是什么?除了为了完整性而存在之外,此关键字是否还有其他用途?