从某种意义上说,这是重复的,因为有人问到有关监视窗口在不同版本的软件下均无法正常运行的问题,但在2017年下却无法正常运行,因此我再次提出。
我的应用程序C ++ 99,它使用的是我编写的库C(C89)和C ++ 99。一切都会编译和链接,而不会发出警告。
C文件具有结构类型的全局变量,该变量在其标头中声明为extern。
当我在具有这种结构的文件中放置一个断点时,它在变量监视窗口中显示为全零内容,尽管该函数明显更改了其中的变量并对这些变量做出了反应。
其他变量,包括其他文件作用域变量(静态int),也可以正常显示。
关于此变量的唯一不寻常的事情是C ++模块包括.h文件,我不得不将变量的外部变量与C函数一起放入extern "C"
块中。我尝试了条件编译,以使该编译单元看不到外部代码,但这无济于事。但是,如果我仅将第二个名为msDecoy
的结构添加到变量定义中,Visual Studio现在可以看到第一个变量的内容。 (msDecoy
在软件中无处引用。)
MyStruct_T ms, msDecoy;
从6.0开始,我总共使用Visual Studio 3-4个工年,而2017年使用了Visual Studio。目前,我已经为C / C ++编程了25个人年。也就是说,不是C或调试器是基本不熟悉的问题。
我认为这是Visual Studio的错误,但是是否有人有其他解释或更好的解决方法?