2013-01-05 49 views
1

我寫了這個簡單的代碼只是爲了檢查#include <decimal/decimal>是否有效:十進制GCC庫

#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

請編輯您的問題,直接包含錯誤消息。 –

+1

將錯誤消息內聯 - 不要讓我們點擊一​​個鏈接。 –

+0

對不起,我真的無法縮進它,這需要幾周才能做到這一點...... – fpiro07

回答

2

在構建gcc時,您可以啓用對C的小數支持TR24732的支持。 C TR創建內置類型,如_Decimal64,通過包含<decimal.h>(例如,decimal64)給出更好的名稱。當構建包含十進制支持時配置gcc時,這些內置類型也可以在C++中使用。

對C++的十進制支持由TR27433定義,並且將通過包括<decimal/decimal>來提供。使用gcc十進制支持在C++中似乎只有在gcc編譯時啓用了十進制支持纔可用,即它似乎使用與C代碼相同的內置類型。

在任何一種情況下,似乎gcc中的十進制支持都不包含各個TR指定的所有內容。特別是,我上次檢查I/O支持丟失。

+0

那麼有沒有辦法讓它工作?我如何構建啓用了十進制支持的GCC? – fpiro07

+0

@ fpiro07:配置gcc時,需要添加'--enable-decimal-float'來啓用十進制支持。有了這個配置,它*使用*爲我工作,但目前我只能編譯但不能鏈接代碼(我試着用MacOS上gcc的當前SVN頭)。在鏈接時沒有找到處理基本操作的某些符號,並且我未能在已安裝的庫中找到它們(...並且它們似乎也不在構建的對象文件中)。 –

+0

你是否也知道如何使用MacPorts啓用小數支持? – fpiro07