2012-02-20 11 views
8

Chciałbym poznać różnicę między kwalifikatorem a modyfikatorem. Niektóre książki sugerują, że volatile jest modyfikatorem, inne książki traktują to jako kwalifikator.Jaka jest różnica między kwalifikatorem a modyfikatorem w C?

Czym właściwie jest modyfikator i kwalifikator w odniesieniu do zmiennej?

+0

Dodatkowe pytanie: gdzie mieści się "specyfikator zgłoszenia"? – Kos

+1

@Kos: "specyfikator deklaracji" jest bardziej ogólną kategorią. Właściwie nie ma czegoś takiego jak pojedynczy "deklarator-specyfikator" w gramatyce C, ale "specyfikatory-deklaracje" to lista specyfikacji klasy pamięci ('typedef',' static', 'extern',' auto', 'register'), kwalifikatory typów ('const',' restrict', 'volatile'), specyfikatory funkcji (' inline') i nazwy typów, które (nieformalnie) określają, co faktycznie jest definiowane. –

+0

Zapytaj autora książki, nadrobili termin "modyfikator" z nieba. Nie ma takiego terminu. – Lundin

Odpowiedz

6

W terminologii C volatile jest kwalifikatorem .

const, restrict, volatile i C11 _Atomic to kwalifikatory typu C.

C terminologia nie używa słowa modyfikator podczas deklarowania obiektu.

+0

Co sądzisz o lekcjach przechowywania, czy są one również objęte kwalifikatorem? –

+0

'static' i' extern' są specyfikatorami klasy pamięci, a nie kwalifikatorami. Jedną z różnic jest to, że są używane tylko w definicjach, podczas gdy kwalifikatory mogą być używane w deklaracjach. – ugoren

+0

@ugoren: nie ma takiego rozróżnienia w składni. Po prostu różne części standardowego stanu określają, że prawie każda deklaracja obiektu ze specyfikatorem klasy pamięci jest definicją, w jedną lub w drugą stronę (ponieważ jest automatyczna, lub ponieważ jest to wstępna definicja, lub ponieważ jest to definicja zewnętrzna lub inne rodzaje definicji, o których nie myślałem). –

Powiązane problemy