Zwróć uwagę, że to pytanie zostało pierwotnie opublikowane w 2009 r., Zanim C ++ 11 został ratyfikowany i zanim znaczenie
auto
słowa kluczowego zostało drastycznie zmienione. Udzielone odpowiedzi dotyczą tylko C ++ 03 znaczeniaauto
- czyli określonej klasy pamięci masowej - a nie znaczenia C ++ 11auto
- czyli automatycznego odejmowania typów. Jeśli szukasz porady, kiedy używać C ++ 11auto
, to pytanie nie dotyczy tego pytania.
Przez długi czas myślałem, że nie ma powodu, aby używać static
słowa kluczowego w C, ponieważ zmienne zadeklarowane poza zakresem bloków były niejawnie globalne. Potem odkryłem, że zadeklarowanie zmiennej jako mieszczącej się static
w zakresie blokowym nadałoby jej stały czas trwania, a zadeklarowanie jej poza zakresem bloku (w zakresie programu) dałoby jej zakres plikowy (można uzyskać do niego dostęp tylko w tej jednostce kompilacji).
Pozostaje mi więc tylko jedno słowo kluczowe, którego (być może) jeszcze w pełni nie rozumiem: auto
słowo kluczowe. Czy jest inne znaczenie niż „zmienna lokalna”? Cokolwiek robi, co nie jest robione domyślnie dla ciebie, gdziekolwiek chcesz go użyć? Jak zachowuje się auto
zmienna w zakresie programu? A co ze static auto
zmienną w zakresie pliku? Czy to słowo kluczowe ma inny cel niż tylko istnienie kompletności ?