在编译时在浮点数和双精度之间切换

Switching between float and double precision at compile time

本文关键字:之间 双精度 编译 浮点数      更新时间:2023-10-16

如果我想在编译时在浮点数和双精度之间切换,我应该在哪里查看。就像,如果用户希望所有内容都以浮点而不是双精度表示,我如何保持这种灵活性?换句话说,我应该如何定义一个有条件地可以是浮点数或双精度的变量?

如果在编译时进行切换是可以的,一个简单的typedef就可以了:

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

在代码中使用user_data_t,如果要在编译时doubles,请设置USE_DOUBLES

g++ -DUSE_DOUBLES=1 myprogram.cpp

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

查看联合日期类型。

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

根据使用情况,模板也是一个可行的选择。

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

我不希望在我的代码中使用#define s。

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