'/ fp:fast'和'/ Za'不兼容Visual C ++

时间:2012-05-07 09:00:25

标签: visual-studio visual-c++ compiler-options

我遇到了Visual 2008 SP1中的问题。

编译器产生:

  

'/ fp:fast'和'/ Za'不兼容

问题是我没有在属性中使用/ Za。所以我不明白为什么在没有设置选项时会发生冲突。

这是项目属性中生成的命令行:

/Od /I "..\..\..\..\..\tools\gsoap-soapcpp-2.7.6\src" /I "..\..\..\..\..\platform\vs2008\win32\gsoap-soapcpp-2.7.6\src"   
/D "WIN32" /D "_DEBUG" /D   
"_CONSOLE" /D "YY_NO_UNISTD_H" /D "_WIN32_WCE=0x700" /D "UNDER_CE" /D "WINCE" /D   
"DEBUG" /D "ARM" /D "_ARM_" /D "_UNICODE" /D "UNICODE" /Gm /EHsc /MTd /fp:fast /GR-   
/Fo"Freescale i.MX53 QSB - WEC7 (ARMv4I)\Debug IMX53/" /Fd"Freescale i.MX53 QSB - WEC7   
(ARMv4I)\Debug IMX53/vc80.pdb" /W3 /nologo /c /TP /wd4996  

如您所见,/ fp:fast已设置但未设置/ Za。

是否有其他选项可能间接引用/ Za?

在挖掘了一点之后,我意识到BuildLog.htm文件说:

Creating temporary file "(...)\Freescale i.MX53 QSB - WEC7 (ARMv4I)\Debug IMX53\RSP00000341365424.rsp" with content  

[{CORRECT COMMAND LINE}

{list of source files paths}
]  

Creating command line "cl.exe @"(...)\Freescale i.MX53 QSB - WEC7 (ARMv4I)\Debug IMX53\RSP00000341365424.rsp" /nologo"
Creating temporary file "(...)\Freescale i.MX53 QSB - WEC7 (ARMv4I)\Debug IMX53\RSP00000441365424.rsp" with content
[  
{WRONG COMMAND LINE containing /Za}  
{list of source files paths}
]
Creating command line "cl.exe @"(...)\Freescale i.MX53 QSB - WEC7 (ARMv4I)\Debug IMX53\RSP00000441365424.rsp"/nologo"

您是否知道为什么可能会创建第二个临时文件?我的项目中是否有必须修复的属性?

[编辑]感谢Hans,我发现了这个问题。我在项目中的一个文件有一个不同的编译器选项,我不知道是什么导致了这个问题。感谢buildlog.htm文件

我找到了哪一个

3 个答案:

答案 0 :(得分:4)

看到编译器不止一次启动是对问题根源的强烈暗示。您可能在项目中有一些/ Za单独打开的源代码文件。快速解决方法是使用Shift +单击选择项目中的所有文件并重置选项。

答案 1 :(得分:1)

在Visual Studio 2008中,项目->属性->配置属性-> C / C ++->语言,将“禁用语言扩展”从“是(/ Za)”更改为“否”。

答案 2 :(得分:0)

我的猜测是你在VS2008上使用了错误的WinCE版本 - 你好像在这里编译ARM,是吗?我对vc80.pdb的引用引起了我的怀疑,_WIN32_WCE表面上是一个VS2005复古符号文件。也许这是你正在移植的VS2005项目?

问题here表示您不应手动定义{{1}},您可以尝试将其与正确的Platform SDK定义相关联的建议。