我编写这个简单的代码只是为了检查#include <decimal/decimal>
是否有效:
#include <iostream>
#include <decimal/decimal>
using namespace std;
int main ()
{
cout << "Hello, world!" << endl;
return 0;
}
我编译它:
$ g++ main.cpp -o exe
但我收到此错误消息:
In file included from main.cpp:2:0:
/opt/local/include/gcc47/c++/decimal/decimal:39:2: error: #error This file requires compiler and library support for ISO/IEC TR 24733 that is currently not available.
/opt/local/include/gcc47/c++/decimal/decimal:230:56: error: unable to emulate 'SD'
/opt/local/include/gcc47/c++/decimal/decimal:251:5: error: 'std::decimal::decimal32::decimal32(std::decimal::decimal32::__decfloat32)' cannot be overloaded
......更多类似的错误......(由Mats Petersson删除)
这是什么意思?我该如何解决?
答案 0 :(得分:2)
构建gcc时,您可以启用对TR24732的C小数支持的支持。 C TR创建内置类型,如_Decimal64
,通过包含<decimal.h>
(例如decimal64
)给出更好的名称。当构建包含小数支持时配置gcc时,这些内置类型也可以在C ++中使用。
C ++的十进制支持由TR27433定义,并且可以通过包含<decimal/decimal>
来提供。如果gcc是在启用了十进制支持的情况下编译的,那么C ++中的gcc十进制支持似乎是唯一可用的,即它似乎使用与C代码相同的内置类型。
在任何一种情况下,gcc中的小数支持似乎都不包括各个TR指定的所有内容。特别是,上次我检查I / O支持时丢失了。