Зауважте, це питання було спочатку опубліковано у 2009 році, до того, як було затверджено C ++ 11 і до того, як значення
auto
ключового слова було кардинально змінено. Надані відповіді стосуються лише значення C ++ 03auto
- що є вказаним класом зберігання - а не значення C ++ 11auto
- що є автоматичним вирахуванням типу. Якщо ви шукаєте пораду щодо того, коли використовувати C ++ 11auto
, це питання не стосується цього питання.
Найдовше я думав, що немає жодної причини використовувати static
ключове слово в C, оскільки змінні, оголошені поза сферою блоку, були неявно глобальними. Потім я виявив, що оголошення змінної як static
усередині блоку-сфери дасть їй постійну тривалість, а оголошення за межами області блоку (у програмі-області) дасть їй область області (доступ до неї можна отримати лише в цьому модулі компіляції).
Отже, у мене залишається лише одне ключове слово, яке я (можливо) ще не повністю розумію: auto
Ключове слово. Чи є в цьому якесь інше значення, крім "локальна змінна?" Що-небудь, що він робить, не виконується неявно для вас, де б ви не хотіли це використовувати? Як поводиться auto
змінна в обсязі програми? Що з static auto
змінною у діапазоні файлів? Чи має це ключове слово якісь цілі, крім лише існуючих, для повноти ?