vedo domande occasionali quali "qual è la differenza tra una dichiarazione e una definizione":Perché una dichiarazione typedef non è chiamata definizione typedef?
What is the difference between a definition and a declaration? La distinzione è importante e intellettualmente raggiunge due cose importanti:
- che porta alla ribalta il differenza tra riferimento e referente
- È come C consente la separazione nel tempo dell'attaccamento tra riferimento e referente.
Quindi perché una dichiarazione C typedef
non è denominata typedef
definizione?
In primo luogo, è ovviamente una definizione. Definisce un alias. Il nuovo nome deve essere considerato come riferito alla cosa esistente. Ma certamente vincola il riferimento a un referente specifico ed è senza dubbio una dichiarazione che definisce.
In secondo luogo, non si chiamerebbe typedec
se fosse una dichiarazione?
In terzo luogo, non eviterebbe tutte quelle domande confuse che le persone chiedono quando tentano di fare una dichiarazione in avanti usando un typedef?
Sei pronto ad accettare la possibilità che la risposta sia semplice come "lo standard non è coerente al 100% nella sua terminologia"? –
Una dichiarazione typedef è una definizione * e * una dichiarazione. Immagino che la gente di solito si riferisca a loro come "dichiarazioni" invece di definizioni perché quest'ultima suona ridondante. –
E FWIW, la lingua esatta dallo standard è la seguente: "* In una dichiarazione il cui identificatore di classe di memoria è' typedef', ogni dichiaratore definisce un identificatore come un nome typedef che indica il tipo specificato per l'identificatore * ". –