widzę sporadyczne pytania, takie jak: „Jaka jest różnica między deklaracją a definicją”:Dlaczego deklaracja typedef nie nazywa się definicją typedef?
What is the difference between a definition and a declaration? Rozróżnienie to jest ważne i intelektualnie osiąga dwie ważne rzeczy:
- Przynosi na pierwszy plan różnica między referencją a referencją
- W ten sposób C umożliwia separację w czasie zajęcia między referencją a referencją.
Dlaczego więc deklaracja C typedef
nie jest nazywana definicją typedef
?
Po pierwsze, jest to oczywiście definicja. Definiuje alias. Nowe imię należy rozumieć jako odnoszące się do istniejącej rzeczy. Ale z pewnością wiąże odniesienie do określonego odniesienia i bez wątpienia jest stwierdzeniem definiującym.
Po drugie, czy nie byłoby to nazywane typedec
, jeśli było to oświadczenie?
Po trzecie, czy nie omijałoby wszystkich tych mylących pytań, które ludzie zadają, gdy próbują sporządzić deklarację terminową za pomocą typedef?
Czy jesteś gotowy zaakceptować możliwość, że odpowiedź może być tak prosta, jak "standard nie jest w 100% spójny w swojej terminologii"? –
Deklaracja typedef jest zarówno definicją * jak i * deklaracją. Wyobrażam sobie, że ludzie zazwyczaj określają je jako "deklaracje" zamiast definicji, ponieważ te ostatnie wydają się zbędne. –
I FWIW, dokładny język ze standardu jest następujący: "* W deklaracji, której specyfikatorem klasy pamięci jest' typedef', każdy deklarator definiuje identyfikator będący nazwą 'typedef' oznaczającą typ określony dla identyfikatora * ". –