十进制GCC库

Decimal GCC library

本文关键字:GCC 十进制      更新时间:2023-10-16

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

这是什么意思?我该怎么修理它?

在构建gcc时,您可以启用C对TR24732的十进制支持。C TR创建了像_Decimal64这样的内置类型,通过包含<decimal.h>(例如decimal64),这些类型被赋予了更好的名称。当gcc在构建时被配置为包含十进制支持时,这些内置类型也可以在c++中使用。

c++的十进制支持由TR27433定义,将通过包含<decimal/decimal>来实现。对于gcc的十进制支持,c++似乎只有在gcc编译时启用十进制支持时才可用,也就是说,它似乎使用与C代码相同的内置类型。

在这两种情况下,gcc中的十进制支持似乎不包括各自tr指定的所有内容。特别是,上次我检查I/O支持缺失。