2013-09-12 2 views
0

Я использую Visual Studio. я пришел через код, как следующее:Точное определение непрозрачных типов и где именно их определения скрыты от пользователя и как заглянуть в них?

typedef struct A_def A; 
typedef struct A *A_ptr; 

A_def скрыта. Это непрозрачный тип. Это реализация скрыта, поэтому, когда я перехожу к ее определению, ничего не происходит в VS.

Это потому, что реализация/определение скрыто в DLL-файле или .lib-файле? И если да, то как я могу подтвердить наличие определения A_def с помощью dumpbin или аналогичного инструмента?

Кроме того, если это действительно непрозрачный тип почему он будет называться в будущем объявленной структуры или прямой декларации (такие определения непрозрачных типов бросают вокруг), так как он уже объявлен и только скрытый от пользователя?

ответ

0

Это просто форвардная декларация. Определение требуется во время компиляции (если только вы не используете только указатели на структуру) и не скрыты в dll или lib.

«Перейти к defnition» является частью intellisense визуальной студии, и он, возможно, не нашел определения структуры в исходных файлах, которые он анализировал.

Структуры, как правило, объявляются, если существуют циклические зависимости или для того, чтобы отделить интерфейс от реализации.

+0

Не существует файла C с определением struct A_def, уверяю вас. Он все еще компилируется. – Nothing

+0

Эти файлы C, возможно, уже скомпилированы и являются частью готовой библиотеки. Однако вы не сможете использовать struct A_def в своем коде, если у вас нет его определения. Тем не менее, вы все равно можете использовать/объявить указатель на структуру A_def. – user1969104

+0

Не могли бы вы предложить, какие расширения/типы могут иметь двоичные файлы? – Nothing