[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] opaque pointer



Ivan Shmakov -> debian-russian@lists.debian.org  @ Tue, 07 Oct 2014 17:15:44 +0000:

 IS>> Что как бы намекает на то, что FILE отнюдь не opaque.

 AC>> Как минимум, используется он как opaque.  Хотя на практике он,
 AC>> скорее всего, тоже уже устоялся, не менялся дцать лет, и может быть
 AC>> доступен открыто.

 IS> 	Смысл в том, что «непрозрачные указатели» C плохо совмещаются с
 IS> 	такими средствами языка, как inline и #define.

Да.  Реализация в _отдельной_ (в частности, отдельно заменяемой)
библиотеке с такими средствами вообще не совмещается.

 AC>> Но тем не менее, в _API_ libc определения FILE нет.

 IS> 	Да, но это свойство документации, — не языка.

Не библиотеки, скажем так.  Это, гм, намек: если вы раскопали в хедерах
определение FILE и начали им пользоваться - вы подложили грабли.  Себе
или тому, кто после вас будет это поддерживать.

Повторюсь, FILE еще куда ни шло, это давно устоявшийся тип, не
менявшийся дцать лет.  И то, в общем, в man putc написано достаточно,
чтобы без крайней необходимости им не пользоваться :)

 IS> 	Недокументированные типы, функции, переменные, etc. — возможны
 IS> 	совершенно в любой среде программирования.  В отличие от
 IS> 	«непрозрачных».

Начнем с того, что функции, типы и переменные, как недокументированные,
так и документированные, возможны не в любой среде программирования :)

А среди тех, где они возможны, я что-то не соображу ни одной, где
невозможны "непрозрачные".  Не подскажете?

Да, существуют, возможно, конкретные библиотеки, в т.ч. довольно
большие, построенные по прозрачной схеме.  Особенно - шаблонные для C++,
так уж там устроено это место в языке.  Но, кажется, в той же STL тот же
ввод-вывод все равно имеет непрозрачную часть.


Reply to: