我正在尝试在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:语法错误:')'
我尝试了其他人推荐的几种不同的东西,但似乎都没有。我试图在源文件上运行预处理器并检查生成的代码,但它没有提供任何见解。有没有人知道这里出了什么问题?
答案 0 :(得分:0)
我遇到了与你完全相同的错误 - 使用旧代码,现在尝试在VS2013下编译它。对我来说,问题与xtgmath.h的这一行有关:
_GENERIC_MATH1( round ,_CRTSPECIAL)
我把它钉在了stdafx.h中预定义的 round 。在VS2013中, round 已经是内置函数,并且定义覆盖导致编译错误。
为了解决这个问题,我在stdafx.h中注释了 round 定义。