Как справиться с поддержкой нескольких файлов I / P в моей библиотеке? - PullRequest
0 голосов
/ 04 августа 2011

см. Я пишу одну библиотеку avi demuxer. В котором я экспортировал несколько API для различных функций. Теперь, когда в первый раз вызывается функция aviopen () с именем файла i / p, я анализирую весь файл и сохраняю некоторую информацию в некоторой структуре, которая у меня есть malloc. теперь, когда снова вызывается какой-либо API для этого файла, следует использовать информацию этой структуры и выполнить некоторую работу.

Я НЕ хочу показывать эту структуру пользователю библиотеки. даже я не хочу не дать ему указатель этой структуры. В таком случае, как я могу следить за этой структурой ???

Я также хочу обеспечить поддержку нескольких файлов в моей библиотеке, поэтому, если какое-либо приложение хочет открывать более одного файла одновременно, он может это сделать.

Итак, как мне сохранить дескриптор каждого открытого файла для выделенной структуры?

1 Ответ

1 голос
/ 04 августа 2011

Обычный способ реализовать это - непрозрачный указатель .

Если вы по какой-то причине вообще не хотите передавать указатель, вы можете оставить глобальный ("private"") массив / хэш ваших структур, и дать вашим пользователям индекс в этом глобальном контейнере (может быть простым int).Это гораздо больше работы (и гораздо более подвержено сбоям и, возможно, слишком быстро), чем просто раздавать непрозрачные указатели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...