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: