Примечание этот вопрос был первоначально опубликован в 2009 году, прежде чем С++ 11 был ратифицирован и до того, как значение ключевого слова
auto
было радикально изменено. Приведенные ответы относятся только к значению С++ 03auto
- того, что указанный класс хранения, а не значение С++ 11auto
, - это автоматический вывод типа. Если вы ищете советы о том, когда использовать С++ 11auto
, этот вопрос не имеет отношения к этому вопросу.
В течение долгого времени я думал, что нет смысла использовать ключевое слово static
в C, потому что переменные, объявленные за пределами области блока, были неявно глобальными. Затем я обнаружил, что объявление переменной как static
в пределах области блока дало бы ей постоянную продолжительность, и объявление ее за пределами области блока (в области программы) дало бы ей область файл (к ней может быть доступ только в этом блоке компиляции).
Итак, это оставляет мне только одно ключевое слово, которое я (возможно) еще не понял полностью: auto
. Есть ли другое значение, кроме "локальной переменной"? Все, что он делает, неявно делается для вас, где бы вы ни хотели его использовать? Как переменная auto
ведет себя в области программы? Что из переменной static auto
в области файлов? Имеет ли это ключевое слово какую-либо цель, кроме только существующей для полноты?