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