c++ - VS2005 C++ 编译器因/Gd 标志而崩溃

标签 c++ visual-studio-2010 compiler-construction visual-studio-2005

我试图使用 2005 编译器在 Visual Studio 2010 中编译我们的项目,我偶然发现了这个奇怪的错误。

每当我尝试使用带有“不发送”按钮的“Microsoft (R) C/C++ 优化编译器”错误对话框从 VS2010 编译它时,这个特定文件会使编译器崩溃。我查看了 VS2010 调用 2005 编译器的方式,并注意到 VS2005 调用它的方式有些不同。所以我开始一个一个地删除这些差异,同时在每次尝试后尝试编译,一旦我删除了 /Gd 标志,文件就成功编译了。

查看编译器文档,此标志控制调用约定并将其设置为默认的 __cdecl。唯一的区别是在 VS2005 中省略了它,但 VS2010 决定将它添加到命令行,导致崩溃。

有没有人遇到过这个问题,或者知道解决这个问题的方法?我似乎无法想出一种方法让 VS2010 从命令行中删除 /Gd,即使它是默认设置。我唯一能找到的是如何添加参数,而不是删除。

谢谢。

最佳答案

假设您有充分的理由想要将新 IDE 与其编译器的祖 parent 一起使用(我很好奇!),您可以在“C/C++”配置属性的“高级”分支中更改调用约定一个项目。
该列表框只给我三个可供选择的值,但是当我手动删除文本时,IDE 会在没有任何/Gx 开关的情况下调用编译器——至少“命令行”分支显示的是这样。

将您的问题归结为一个重现案例并联系 MS 支持提供该案例可能是个好主意。他们可能已经有了针对该问题的修补程序,如果还没有,他们可能能够在相对较短的时间内制作出一个。由于他们的软件中的错误联系支持过去是免费的(当编译器崩溃而不是发出有意义的消息时,它总是一个编译器错误)。

关于c++ - VS2005 C++ 编译器因/Gd 标志而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2949435/

相关文章:

c++ - 如何从对象 vector 中删除元素?

c++ - glColor3f 仅颜色为红色

c++ - DLL链接到静态库

asp.net - VS2008 和 VS2010 Express 中缺少附加到进程

在 Windows 上从 .C 文件创建 .exe

c++ - 参数未在函数 C++ 中使用

c++ - 如何在MFC 中通过CSocket 发送自定义结构?

C编程: Unable to perform do while looping in visual studio

java - 通知 java 从哪里导入(lib)

c++ - 为什么 LLVM 完全展开我的循环?