在编译时在float和double精度之间切换

时间:2013-01-24 22:22:28

标签: c++ floating-point-precision double-precision

如果我想在编译时在float和double精度之间切换,我应该在哪里看看。就像,如果用户想要浮动而不是双精度,我怎么能保持这种灵活性呢?换句话说,我应该如何有条件地定义一个浮点数或双精度变量?

3 个答案:

答案 0 :(得分:14)

如果在编译时进行切换是可以的,那么简单的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

答案 1 :(得分:1)

如果不确切地知道您打算如何使用这些数据,很难推荐正确的解决方案。

查看联合日期类型。

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

模板也是一种可行的选择,具体取决于使用情况。

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

答案 2 :(得分:1)

我不想在我的代码中使用#define

我会有两个不同的标头和两个不同的typedef s,并允许构建选项选择包含哪个标头。