Что было инициализировано? - PullRequest
0 голосов
/ 25 июля 2011

Я изучаю проект ffmpeg

в одной из примеров программы:

/* must be called before using avcodec lib */
avcodec_init();

/* register all the codecs */
avcodec_register_all();

Мне интересно, что было сделано внутри с этими двумя функциями Я использую GDB, чтобы увидеть, какие глобальные переменные были созданы, но не могу найти никаких переменных

На самом деле мои вопросы не относятся к библиотеке ffmpeg. Речь идет об использовании внешней библиотеки C в этих библиотеках должны быть созданы переменные, как мне найти эти переменные?

Я использую Netbeans в качестве IDE

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 25 июля 2011

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

В документации, если она полезна, должны быть указаны все переменные, функции и т. Д., К которым вы можете обращаться и использовать. Заголовочные файлы также являются довольно хорошим источником информации, хотя они не всегда говорят, как использовать то, что вы видите. И, как в этом случае, если вы можете получить исходный код, это также хороший источник информации, хотя может пройти много времени, прежде чем вы начнете видеть, если библиотека обширна.

Добавление

Если библиотека была скомпилирована с отладочной информацией, и у вас есть источники, вы сможете увидеть, как она работает, и проверить все виды переменных (локальные, статические, глобальные). Сокрытие информации от вас в первую очередь не делается для того, чтобы быть скрытным, это делается для того, чтобы вы не могли получить доступ к личной информации и (возможно, случайно) поставить под угрозу целостность личных данных, которые она хранит. Как я уже сказал в комментарии, это называется инкапсуляция и, IMO, практика хорошего программирования (tm).

1 голос
/ 25 июля 2011

Полагаю, вы можете получить исходный код и увидеть его самостоятельно?

http://ffmpeg.org/download.html

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