3

コンパイル時にfloatと倍精度を切り替えたい場合は、どこを見ればよいですか。たとえば、ユーザーが倍精度ではなくすべてを浮動小数点数にしたい場合、この柔軟性をどのように維持できますか?言い換えると、条件付きで浮動小数点または倍精度のいずれかになり得る変数をどのように定義する必要がありますか?

4

3 に答える 3

17

コンパイル時に切り替えても問題ない場合は、単純typedefに次のようにします。

#ifdef USE_DOUBLES
typedef double user_data_t;
#else
typedef float user_data_t;
#endif

user_data_tコードで使用し、USE_DOUBLES必要に応じdoublesてコンパイル時に設定します。

g++ -DUSE_DOUBLES=1 myprogram.cpp
于 2013-01-24T22:25:51.597 に答える
1

#defineコードに s を含めたくない。

2 つの異なる s を持つ 2 つの異なるヘッダーがtypedefあり、ビルド オプションでどのヘッダーを含めるかを選択できるようにします。

于 2013-01-24T22:59:05.353 に答える
1

データをどのように使用するつもりなのかを正確に知らなければ、正しいソリューションを推奨することは困難です。

ユニオンの日付型を見てください。

http://msdn.microsoft.com/en-us/library/5dxy4b7b(v=VS.80).aspx

用途によっては、テンプレートも有効なオプションです。

http://msdn.microsoft.com/en-us/library/y097fkab.aspx

于 2013-01-24T22:25:04.920 に答える