Здравствуйте, _NN_, Вы писали:
_NN>Функции работы с файлом как раз являются таким примером.
Мне нравится
обсуждение возможных проблем концепции opaque pointer, которая лежит в основе FILE*
Автор справедливо замечает: решение с opaque data type обрекает вас на
выделение объектов в куче. Но это иногда может быть не совсем эффективно. А иногда -- совсем не эффективно. Как решение автор предлагает shadow data types:
typedef struct
{
unsigned char size_shadow[16];
} wibble;
void wopen(wibble *, int);
В инкапсулированной части:
typedef struct
{
grommet g;
flange f;
} wibble_rep;
Это позволяет даже на C размещать инкапсулированные объекты на стеке.