按值传递的参数在 Visual Studio 2015 x64 调试器中显示不正确?

Posted

技术标签:

【中文标题】按值传递的参数在 Visual Studio 2015 x64 调试器中显示不正确?【英文标题】:Parameters passed by value displayed incorrectly in the visual studio 2015 x64 debugger? 【发布时间】:2017-01-19 08:48:41 【问题描述】:

x86 工作正常。 x86 debug values screenshot

但是 x64 显示不正确。 x64 debug values screenshot

这里是代码。

struct vector3  float x, y, z; ;

vector3 mul(vector3 v1, vector3 v2)

    vector3 v3 =  v1.x * v2.x, v1.y * v2.y, v1.z * v2.z ;
    return v3;


int main()

    vector3 a =  1.0f, 1.0f, 1.0f ;
    vector3 b =  2.0f, 2.0f, 2.0f ;
    vector3 c = mul(a, b);
    return 0;

我首先在我的一个个人项目中注意到了这一点,并且能够在一个新项目中复制它(上面的图片来自新项目)。

我想知道是什么原因造成的。 可能是安装错误,还是 VS 错误? 是否可以在其他机器上复制?

这就像我可以编写代码一样简单。

请注意,此代码在 x64 上运行良好:

struct vector2  float x, y; ;

vector2 mul(vector2 v1, vector2 v2)

    vector2 v3 =  v1.x * v2.x, v1.y * v2.y ;
    return v3;


int main()

    vector2 a =  1.0f, 1.0f ;
    vector2 b =  2.0f, 2.0f ;
    vector2 c = mul(a, b);
    return 0;

【问题讨论】:

@Jonas,这些是调试器窗口的图片,不是代码 你确定是同一个代码吗?老实说,在第一个示例中,传递给函数的向量似乎已正确初始化,而在第二个示例中则没有。 另外你应该添加一个Minimum Compilable Verifiable Example,特别是因为你说你可以在一个新项目中重现它。 @SingerOfTheFall 是的,完全一样。我只是在顶部工具栏中从 x84 更改为 x64。 切换构建配置后是否重新构建了项目?尝试清理项目,然后重建 【参考方案1】:

重新安装 Visual Studio 解决了这个问题。

【讨论】:

以上是关于按值传递的参数在 Visual Studio 2015 x64 调试器中显示不正确?的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 2010 中传递命令行参数?

如何在 Visual Studio 2015 调试中将“%”符号作为命令行参数 (argv) 传递?

按值传递参数时的奇怪行为

参数如何传递到 Visual Studio 的自定义构建工具中?

如何按值传递sql函数参数

在Visual Studio代码中,当我调试/运行代码时,我想将参数(例如-i)传递给Python解释器