十进制GCC库

时间:2013-01-05 17:59:09

标签: c++ gcc decimal

我编写这个简单的代码只是为了检查#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删除)

这是什么意思?我该如何解决?

1 个答案:

答案 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支持时丢失了。