Eventuali duplicati:
Why is FILE all-caps as in FILE*?libreria standard `tipo file`
maiuscolo perché è il tipo di libreria standard FILE
scritto?
È a causa della sua natura opaca?
Grazie.
Eventuali duplicati:
Why is FILE all-caps as in FILE*?libreria standard `tipo file`
maiuscolo perché è il tipo di libreria standard FILE
scritto?
È a causa della sua natura opaca?
Grazie.
Se si guarda alla convenzione di denominazione utilizzata in C, maiuscolo è in genere utilizzato per le macro del preprocessore. La mia ipotesi è che originariamente è stata implementata come una macro che si espande al tipo concreto usato dall'implementazione della libreria.
Non è un tipo opaco, di solito è una struttura C, ma i suoi campi sono definiti dall'implementazione.
Credo che il maiuscolo è perché la storia ...
Lo chiamerei ancora "opaco" a patto che le specifiche non promettano le proprietà del tipo sottostante o il contenuto di tali oggetti. –
Non sicuro, ma si noti che ci sono solo alcuni tipi dichiarati nella libreria C standard. Probabilmente il FILE
è stato il primo definito e lo stile * _t non è stato ancora inventato.
O forse nelle versioni primitive c era una macro ... pensare cosa è successo prima hanno inventato la typedef
:
#define FILE struct __file
Invece di:
typedef struct __file FILE;
Hai il tuo '# define' all'indietro ... –
Oops !!! corretto – rodrigo
Da here
" A rigor di termini, in C il tipo FILE è una libreria definita (nell'intestazione stdio.h) alias (vedi typedef keyword). Non è necessario usare il tipo FILE come tale, solo FIL E * (puntatore a FILE) tipo. È (uno dei;) idiomi divertenti del linguaggio C. Come di consueto, il tipo FILE alias indicata libreria definito struttura, ma non utilizzare i suoi membri direttamente (è attuazione entità dipendente) "
anche this:.
typedef FILE *stream;
Infine here:
Questo è un buona domanda: i tipi di sistema UNIX che sono i relativi contemporanei approssimativi (ad es. 'time_t') hanno nomi di minuscole, come i tipi C incorporati –
Il loro tasto di blocco maiuscolo era rotto e la scadenza era troppo breve –
semplice file d invece sono stati usati degli escriptori? (plain 'ol interi, e quelli built-in erano in minuscolo: 'stdin',' stdout', 'stderr'.) Forse' FILE' doveva distinguere tra usare un descrittore e usare un handle di file. –