私は Ogre と NxOgre の両方を使用しています。どちらも、コンパイラ フラグに依存するか、依存するReal
typedef を持っています。これにより、コンパイラの警告のほとんどが次のようになりました。float
double
warning C4305: 'argument' : truncation from 'double' to 'Ogre::Real'
たとえば、変数を 0.1 で初期化する場合。通常は 0.1f を使用しますが、コンパイラ フラグを倍精度に変更すると、逆の警告が表示されます。どちらかを選んでそのままにしておくのがおそらく最善だと思いますが、可能であればどちらの構成でも機能するようにこれらを書きたいと思います。
修正の 1 つは、問題#pragma warning (disable : 4305)
が発生したファイルで使用することです。この警告が表示されないことで隠れる可能性のある、より複雑な問題が他にあるかどうかはわかりません。コード全体に広がらないように、ヘッダー ファイルにもこれらをプッシュ アンド ポップすることを理解しています。
もう 1 つは、次のような精度コンパイラ フラグに基づいてマクロを作成することです。
#if OGRE_DOUBLE_PRECISION
#define INIT_REAL(x) (x)
#else
#define INIT_REAL(x) static_cast<float>( x )
#endif
これまでに行われたすべての変数の初期化を変更する必要がありますが、少なくとも将来の証拠になります。
好みや考えていないことはありますか?