【发布时间】:2015-07-26 06:53:09
【问题描述】:
我正在尝试在 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:语法错误:')'
我尝试了其他人推荐的几种不同的方法,但似乎都不起作用。我试图在源文件上运行预处理器并检查生成的代码,但它没有提供任何见解。有人知道这里出了什么问题吗?
【问题讨论】:
-
我的猜测是宏破坏了一些东西。
-
这就是微软不愿意支持 C99 的原因,很多常见的短词被丢弃在全局命名空间中。但他们必须这样做,C++11 要求它。你必须追赶
cbrt。用全大写的方式编写宏以避免这种损失。