Как я могу добавить часы на член непрозрачной структуры typedef'd, чтобы включить указатель в отладчике Visual Studio - PullRequest
0 голосов
/ 27 февраля 2019

Я заметил причуду в отладчике Visual Studio, когда я не могу добавить часы на элемент непрозрачной структуры.

Я получаю ошибку:

Класс "Тип "не имеет члена" member "

Код компилируется и ссылается на непрозрачные элементы структуры, в исходных файлах, которые имеют к ним доступ, в операторах if и т. Д. Все работает правильно.

Это код C, а не C ++.

Я пробовал эти 4 различных стиля создания typedef для непрозрачной структуры:

/* same name for struct/typedef, typedef excludes pointer */
typedef struct Type Type;

/* different name for struct/typedef, typedef excludes pointer */
typedef struct Type_ Type;

/* same name for struct/typedef, typedef includes pointer (members not visible in debugger) */
typedef struct Type* Type;

/* different name for struct/typedef, typedef includes pointer */
typedef struct Type_* Type;

3из 4-х работают нормально, когда отладчик показывает значения членов структуры.

Однако один случай, когда определение typedef включает указатель и использует точно такое же имя для struct и typedef,имеет эту проблему.

Я тестировал в Visual Studio 2010 и 2017, и у обоих есть проблема.

Когда я создаю локальную переменную, используя имя структуры, например:

void func(Type param)
{
    struct Type *local = param;

... любые часы в отладчике на local->member имеют ту же проблему.

Аналогично, пытаясь разыграть часы: ((struct Type *)param)->member имеет ту же проблему.

Если я хочу специально использовать стиль typedef struct Type* Type;, есть лиЕсть ли способ обойти добавления элементов структуры в отладчике Visual Studio?

Будет ли это дефектом в Visual Studio?

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