1

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

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

4

1 回答 1

4

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

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

在任何一种情况下,gcc 中的小数支持似乎都没有涵盖相应 TR 指定的所有内容。特别是,上次我检查缺少 I/O 支持。

于 2013-01-05T19:29:18.060 回答