Powiel możliwe:
Why is FILE all-caps as in FILE*?standardowa biblioteka `typ file`
Dlaczego biblioteka standardowa FILE
typ napisane wielkimi literami?
Czy to z powodu swojej nieprzejrzystej natury?
Dziękuję.
Powiel możliwe:
Why is FILE all-caps as in FILE*?standardowa biblioteka `typ file`
Dlaczego biblioteka standardowa FILE
typ napisane wielkimi literami?
Czy to z powodu swojej nieprzejrzystej natury?
Dziękuję.
Jeśli spojrzeć na konwencji nazewnictwa stosowanych w C, górna obudowa jest zazwyczaj używany do makr preprocesora. Domyślam się, że pierwotnie został zaimplementowany jako makro rozwijające się do konkretnego typu używanego przez implementację biblioteki.
Nie jest to typ nieprzezroczysty, zwykle jest to struktura C, ale jego pola są zdefiniowane w implementacji.
Myślę, że wielka jest bo historia ...
Nadal nazywam to "nieprzejrzystym", o ile specyfikacja nie zawiera obietnic dotyczących właściwości danego rodzaju lub zawartości takich obiektów. –
Nie jestem pewien, ale zauważ, że w standardowej bibliotece C jest zadeklarowanych kilka typów. Prawdopodobnie FILE
był pierwszym zdefiniowanym, a styl * _t nie został jeszcze wynaleziony.
Albo w wersjach pierwotnych c było makro ... pomyśleć, co się stało, zanim wynalazł typedef
:
#define FILE struct __file
Zamiast:
typedef struct __file FILE;
Masz swoje '# define' wstecz ... –
Ups! Poprawione – rodrigo
Od here
" Ściśle mówiąc, w C typ pliku jest zdefiniowany przez bibliotekę (w nagłówku stdio.h) jako typ (patrz słowo kluczowe typedef.) Nie trzeba używać typu PLIK jako taki, tylko FIL E * (wskaźnik do PLIKU). To (jeden z;) zabawnych idiomów języka C. Jak zwykle, typ pliku alias oznacza biblioteki określonej strukturze, ale bezpośrednio nie korzystać z jego członków (to realizacja podmiot zależny) „
także this.
typedef FILE *stream;
Wreszcie here:
To Dobre pytanie: Typy systemu UNIX, które są z grubsza równoczesne (np. 'time_t') mają małe litery, takie jak wbudowane typy C. –
Klucz nasadki klucza został zerwany, a termin był zbyt krótki –
Pierwotnie jednak nie było prosty plik d zamiast tego używane są eskryptory? (zwykłe liczby całkowite ol i wbudowane były małe: 'stdin',' stdout', 'stderr'.) Może' PLIK' miał rozróżniać użycie deskryptora i używania uchwytu pliku. –