2013-03-29 10 views

Odpowiedz

11

Nie ma żadnej różnicy.

{ 
    auto int a; 
    /* ... */ 
} 

i

{ 
    int a; 
    /* ... */ 
} 

są równoważne.

Powszechną praktyką nie jest umieszczanie specyfikatora auto.

+0

Mogę to znaleźć w każdym miejscu, co oznacza, że ​​nie ma specjalnego znaczenia słowa kluczowego auto. – vkesh

+1

@vkesh To jest poprawne dla C. "' auto' "oznacza" nie "statyczny", co jest domyślne. Miał większy wpływ na swojego poprzednika B. http://en.wikipedia.org/wiki/B_(programming_language) –

+0

wielkie dzięki za udostępnienie linku. – vkesh

2

Możliwe są dwa przypadki:

  1. auto jest domyślnym i wyraźnie dodanie słowa kluczowego osiąga nic
  2. auto jest niedozwolone (np w zmiennej globalnej), w którym to przypadku dodanie auto zapobiega kod z kompilowania
+0

Czy miałeś na myśli drugi możliwy przypadek, że jeśli dodamy auto do zmiennej globalnej, to zapobiega się definiowaniu zmiennej globalnej ?? Jeśli tak, to co z tego, jeśli coś wiesz? – vkesh

+1

@vkesh: Mówię, że jeśli spróbujesz podać 'auto' dla zmiennej globalnej, kod się nie skompiluje (i tak właściwie działający kompilator). Jeśli chodzi o "jaki jest przypadek użycia", moim punktem jest to, że nie ma żadnego. –

+0

wielkie dzięki za wyjaśnienie. – vkesh

2

We współczesnym C (C89, C99, C11) słowo kluczowe auto jest zbędne. Innym niż intent explicite ("To jest niestatyczna zmienna, i mam na myśli!"), Nie służy to już żadnemu celowi. Jest to pozostałość po historii C przeniesionej z B, ale podobnie jak słowo kluczowe entry stało się praktycznie przestarzałe.

Użyłem go raz w życiu. Było to we wpisie IOCCC w połączeniu z niejawny int [? Gdzie jest auto używane słowo kluczowe C]

drive() { auto motive; ... } 
Powiązane problemy