如果我想在编译时在float和double精度之间切换,我应该在哪里看看。就像,如果用户想要浮动而不是双精度,我怎么能保持这种灵活性呢?换句话说,我应该如何有条件地定义一个浮点数或双精度变量?
答案 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
模板也是一种可行的选择,具体取决于使用情况。
答案 2 :(得分:1)
我不想在我的代码中使用#define
。
我会有两个不同的标头和两个不同的typedef
s,并允许构建选项选择包含哪个标头。