【问题标题】:Struct layout shown incorrectly in MS Visual Studio Quick-Watch windowMS Visual Studio Quick-Watch 窗口中的结构布局显示不正确
【发布时间】:2012-03-25 05:27:08
【问题描述】:

我有一个如下所示的结构定义:

struct mystruct
{
    int first;
    int second;
};

我最近更新了,增加了更多成员:

struct mystruct
{
    int first;
    int additional1;
    int additional2;
    int second;
};

我正在调试如下代码:

mystruct object;
...
object.second = 128;
printf("%d\n", object.second);

执行代码后,我在 Quick-Watch 窗口中查看 object.second 并看到 0;但是,代码输出128。当我查看object 时,我只看到firstsecond 成员,好像快速观察窗口仍然使用我的旧结构声明。

此外,object.second 的地址,如果我从代码中打印出来,与我在 Quick-Watch 窗口中输入&object.second 时看到的不同(相差几句话;实际上是我的结构包含几十个成员,为简洁起见我省略了)。

我尝试通过重新编译、重新启动、还原最近的更改(我使用版本控制系统)并返回它来修复这些不兼容性。我还有什么办法可以解决这个问题?

我使用的是MS Visual Studio 2005。我的代码实际上是C++,但这部分属于C/C++通用子集。

【问题讨论】:

  • 您是否尝试过删除 PDB 和/或 NCB 文件?
  • 没有帮助(不过感谢您的想法)
  • 您说代码在一个公共子集中-您是否重建了它(我假设它是一个库)?你有没有点赞custom data type displays
  • @tinman 是的,我试图重建它;不,我不使用自定义数据类型显示;无论如何,我所有的类型都只是结构/整数

标签: c visual-studio visual-studio-2005


【解决方案1】:

当您编写 mystruct object; 时,它适用于 Visual Studio 2005,但是当您使用普通结构声明而不使用 typedef 时,正确的编写方式需要是 struct mystruct object;,如 here 所述。

我不确定这是否是困扰您的问题,但请尝试一下。

【讨论】:

    猜你喜欢
    • 2017-04-17
    • 1970-01-01
    • 2010-11-09
    • 2010-09-06
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多