読者です 読者をやめる 読者になる 読者になる

Haruyuki Mohri

毛利春幸のブログです。

bcc32c(clang) std::round()でエラー 回避するには

bcc32c(clang) std::round()でエラー

bcc32cではstd:: round()下記コードでエラーが出ます(bcc64は問題なし)
10.1 Berlin Update 2でもまだ同じく直ってません
several unresolved functions declared in <math.h>

unsigned int float2int(float in)
{
    unsigned int i {static_cast<unsigned int>(std::round(in))};
    return i;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    Edit1->Text = float2int(1.1);
}

bcc32cでこの問題を回避する場合

unsigned int float2int(float in)
{
#if __WIN32__
    unsigned int i{static_cast<unsigned int>(System::Math::RoundTo(in, 0))};
#else
    unsigned int i {static_cast<unsigned int>(std::round(in))};
#endif
    return i;
}

f:id:mojeld:20161118174840j:plain

C++Builder 定義済みマクロ - RAD Studio

関連

EMS開発サーバー(RAD Server)環境 + nginxリバースプロキシ - Qiita
C++Builder IDEからC言語コンソールアプリプロジェクトを作る方法 - Qiita