3

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

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

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

看看联合日期类型。

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 回答
1

我不想#define在我的代码中包含 s。

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

于 2013-01-24T22:59:05.353 回答