2

当我尝试编译下一个简单的代码示例时:

echo "#include <cmath>" | g++ -x c++ -c - -m64 -mfpmath=both -std=gnu++11 -o /dev/null

(与-m64选项一起被激活(默认情况下)使用SSE(比如AVX))。

出现以下错误消息:

In file included from <stdin>:1:0:
c:\mingw64\bin\../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../include/c++/4.7.2/cmath:1040:11: error: '::double_t' has not been declared
c:\mingw64\bin\../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../include/c++/4.7.2/cmath:1041:11: error: '::float_t' has not been declared

这是一个错误吗?

如果没有-mfpmath=both选项,则不会发生错误。

我的解决方法是将-D__FLT_EVAL_METHOD__=2-Wp,-w如果-Werror存在,因为“重新定义”警告)添加到g++的选项列表。我认为这是一种肮脏的方式。

4

1 回答 1

4

此错误是在 mingw-w64 主干上的错误提交。我为此写了一个错误报告。谢谢!

于 2012-12-18T14:57:03.773 回答