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