xtgmath.h有编译时错误

时间:2015-05-14 15:19:39

标签: c++ visual-studio-2013

我正在尝试在Visual Studio 2013 Professional中编译旧的C ++程序。我遇到编译错误,Visual Studio说xtgmath.h文件中存在语法错误。完整的日志是:

  

1> fill.cpp 1> C:\ Program Files(x86)\ Microsoft Visual Studio   12.0 \ VC \ include \ xtgmath.h(179):错误C2059:语法错误:'('

     

1> C:\ Program Files(x86)\ Microsoft Visual Studio   12.0 \ VC \ include \ xtgmath.h(179):错误C2027:使用未定义类型' std :: enable_if'

     

1> C:\ Program Files(x86)\ Microsoft Visual Studio   12.0 \ VC \ include \ xtr1common(67):参见' std :: enable_if'

的声明      

1> C:\ Program Files(x86)\ Microsoft Visual Studio   12.0 \ VC \ include \ xtgmath.h(179):警告C4346:' std :: is_integral< _Ty> :: value' :从属名称不是类型

     

1>前缀为' typename'表示类型

     

1> C:\ Program Files(x86)\ Microsoft Visual Studio   12.0 \ VC \ include \ xtgmath.h(179):错误C2988:无法识别的模板声明/定义

     

1> C:\ Program Files(x86)\ Microsoft Visual Studio   12.0 \ VC \ include \ xtgmath.h(179):错误C2143:语法错误:缺少')'之前','

     

1> C:\ Program Files(x86)\ Microsoft Visual Studio   12.0 \ VC \ include \ xtgmath.h(179):错误C4430:缺少类型说明符 - 假定为int。注意:C ++不支持default-int

     

1> C:\ Program Files(x86)\ Microsoft Visual Studio   12.0 \ VC \ include \ xtgmath.h(179):错误C2059:语法错误:','

     

1> C:\ Program Files(x86)\ Microsoft Visual Studio   12.0 \ VC \ include \ xtgmath.h(179):错误C2059:语法错误:')'

我尝试了其他人推荐的几种不同的东西,但似乎都没有。我试图在源文件上运行预处理器并检查生成的代码,但它没有提供任何见解。有没有人知道这里出了什么问题?

1 个答案:

答案 0 :(得分:0)

我遇到了与你完全相同的错误 - 使用旧代码,现在尝试在VS2013下编译它。对我来说,问题与xtgmath.h的这一行有关:

  

_GENERIC_MATH1( round ,_CRTSPECIAL)

我把它钉在了stdafx.h中预定义的 round 。在VS2013中, round 已经是内置函数,并且定义覆盖导致编译错误。

为了解决这个问题,我在stdafx.h中注释了 round 定义。