Здравствуйте, Tilir, Вы писали:
T>Здравствуйте, _NN_, Вы писали:
_NN>>Функции работы с файлом как раз являются таким примером.
T>Мне нравится обсуждение возможных проблем концепции opaque pointer, которая лежит в основе FILE*
T>Автор справедливо замечает: решение с opaque data type обрекает вас на выделение объектов в куче. Но это иногда может быть не совсем эффективно. А иногда -- совсем не эффективно. Как решение автор предлагает shadow data types:
Можно еще через alloca выкрутиться или VLA C99.
Например
size_t sizeof_FILE();
FILE* f = (FILE*)alloca(sizeof_FILE()); // Выделяем на стеке
// Или так C99
char c[sizeof_FILE()];
FILE* f = (FILE*)&c[0];
fcreate(f); // Вызываем конструктор
Можно обернуть в макрос для удобства.