неверные значения наблюдения в сообществе Visual Studio 2017 - PullRequest
0 голосов
/ 25 июня 2019

В некотором смысле это дубликат, так как на вопрос были заданы некоторые вопросы о том, что окно часов не работает в рамках РАЗНЫХ ВЕРСИЙ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, но не в 2017 году, поэтому я спрашиваю заново.

Мое приложение C ++99, и он использует библиотеку, которую я написал часть C (C89) и часть C ++ 99.Он все компилируется и связывается без предупреждения.

Файл AC имеет глобальную переменную, объявленную в заголовке extern, типа структуры.

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

Другие переменные, в том числе другие переменные области файла (статические целые), отображаются нормально,хотя.

Единственная необычная вещь в этой переменной - это то, что модули C ++ включают в себя файл .h, и мне пришлось поместить extern для переменной в блок extern "C" вместе с функциями C.Я попробовал условную компиляцию, чтобы этот модуль компиляции не видел внешний код, но это не помогло.Однако, если я просто добавлю вторую структуру с именем msDecoy к определению переменной, Visual Studio сможет теперь увидеть содержимое первой переменной.(msDecoy нигде в программном обеспечении не упоминается.)

MyStruct_T ms, msDecoy;

Я использую Visual Studio с 6.0 всего 3-4 человека в год, а 2017 год использовал в человеко-месяцахРабота.На данный момент я запрограммировал C / C ++ на 25 человеко-лет.То есть проблема заключается не в простом незнании C или отладчика.

Я предполагаю, что это ошибка Visual Studio, но есть ли у кого-нибудь альтернативное объяснение или лучший обходной путь?

...