Słowo autokluczowe jest bezużyteczne w języku C. Jest tak, ponieważ przed językiem C istniał język B, w którym to słowo kluczowe było niezbędne do deklarowania zmiennych lokalnych. (B rozwinęło się w NB, które stało się C).
Oto instrukcja odniesienia dla B .
Jak widać, podręcznik jest bogaty w przykłady, w jakich autojest używany. Dzieje się tak, ponieważ nie ma intsłowa kluczowego. Potrzebny jest jakiś rodzaj słowa kluczowego, aby powiedzieć „to jest deklaracja zmiennej”, a to słowo kluczowe wskazuje również, czy jest to lokalna, czy zewnętrzna ( autoversus extrn). Jeśli nie używasz jednego lub drugiego, masz błąd składniowy. Oznacza to, że x, y;nie jest deklaracją samą w sobie, ale auto x, y;jest.
Ponieważ podstawy kodu napisane w B musiały zostać przeniesione do NB i C w miarę rozwoju języka, nowsze wersje języka niosły pewien bagaż dla poprawy kompatybilności wstecznej, co przekładało się na mniej pracy. W przypadku programu autoprogramiści nie musieli wytropić każdego wystąpienia autoi go usunąć.
Z podręcznika jasno wynika, że obecnie przestarzały cruft „implicit int” w C (możliwość pisania main() { ... }bez żadnego intz przodu) również pochodzi z B. To kolejna funkcja wstecznej kompatybilności obsługująca kod B. Funkcje nie mają typu zwracanego określonego w B, ponieważ nie ma typów. Wszystko jest słowem, jak w wielu językach asemblera.
Zwróć uwagę, jak funkcja może być po prostu zadeklarowana, extrn putchara następnie jedyna rzecz, która czyni ją funkcją używaną przez identyfikator : jest używana w wyrażeniu wywołania funkcji, takim jak putchar(x), i to właśnie mówi kompilatorowi, aby traktował to słowo bez typu jako wskaźnik funkcji.
automożna określić, ale nie nastąpi to domyślnie?