注意 这个问题最初是在2009年发布的,在 C + + 11被批准之前,在
auto
关键字的含义被彻底改变之前。所提供的答案与auto
的 C + + 03含义有关——auto
是指定的存储类——而不是auto
的 C + + 11含义——auto
是自动类型推导。如果您正在寻求关于何时使用 C + + 11auto
的建议,那么这个问题与该问题无关。
在很长一段时间里,我认为没有理由在 C 中使用 static
关键字,因为在 block-scope 之外声明的变量是隐式全局的。然后我发现,在 block-scope 中声明一个变量为 static
会给它一个永久的持续时间,而在 block-scope 之外(在 program-scope 中)声明它会给它一个 file-scope (只能在那个编译单元中访问)。
因此,我只剩下一个关键字,我(可能)还没有完全理解: auto
关键字。除了“局部变量”还有别的意思吗?无论你想在哪里使用它,它所做的任何事情都不是默认为你做的?auto
变量在程序范围内是如何工作的?文件范围内的 static auto
变量怎么样?这个关键字除了 只是为了完整而存在还有其他用途吗?