Подтвердить что ты не робот

Стандартная библиотека `FILE` типа

Возможный дубликат:
Почему все ФАЙЛЫ ФАЙЛА, как в ФАЙЛЕ *?

Почему стандартная библиотека FILE записывается в верхнем регистре?
Это из-за его непрозрачности?

Спасибо.

4b9b3361

Ответ 1

Если вы посмотрите на соглашение об именах, используемое в C, верхний регистр обычно используется для макросов препроцессора. Я предполагаю, что он первоначально был реализован как макрос, расширяющийся до конкретного типа, используемого в реализации библиотеки.

Ответ 2

От здесь

"Строго говоря, в C тип FILE - это библиотека, определенная в заголовке типа stdio.h(см. ключевое слово typedef). Не нужно использовать тип FILE как таковой, только тип FILE * (указатель на FILE). Это (один из;) C язык смешные идиомы. Как обычно, псевдоним типа FILE обозначает структуру, определенную библиотекой, но не использует ее члены напрямую (объект, зависящий от реализации).

Также this:

typedef FILE *stream;

Наконец здесь:

Ответ 3

Это не непрозрачный тип, он обычно является структурой C, но его поля определены как реализация.

Я предполагаю, что прописная буква - это история...

Ответ 4

Не уверен, но обратите внимание, что в стандартной библиотеке C имеется только несколько типов. Вероятно, FILE был самым первым, и стиль * _t еще не был изобретен.

Или, может быть, в примитивных версиях C это был макрос... подумайте, что произошло до того, как они придумали typedef:

#define FILE struct __file

Вместо:

typedef struct __file FILE;