我一直在研究一个包含非常大的数据集的项目(大约为太字节)。我现在正想测试不同版本的代码。
特别是(在最简单的情况下),我想改变在整个代码中重复的一些变量的类型(我将它们传递给函数)并且我想将它们的类型从double更改为float(为了节省内存空间)。
我的问题是:
最好的方法(我目前正在使用git)管理这两种代码变体是什么?
我不想使用简单的分支,因为我的想法是在测试结束时不合并,我想要保留我的程序的两个(甚至多个)版本。最好的方法是什么?我希望避免重复代码并以最具扩展性的方式进行重复
我已经考虑过使用#defines,但这对于极少数变体来说可能是一个好主意,我希望尽可能多地具有可扩展性
我在C编程。
修改:typedef
在这种情况下非常有用。但是如果我想根据我的变量类型使用不同的函数呢?我知道在C ++中你可以使用模板,但在C中?什么是最好的方式?
答案 0 :(得分:2)
您可以使用typedef
。将它放在项目中的一些常见的低级头文件中,如下所示:
typedef double real_t;
然后你可以小心地,只需一次,将double
替换为real_t
到处都有意义(你不一定能替换无处不在,因为有些地方可能会没有意义,例如你调用外部函数的地方,或者使用double
来表示不相关的东西。
然后,要在两个版本之间切换,只需在一个位置将double
替换为float
即可。或者:
typedef MY_REAL_TYPE real_t;
然后,您可以通过在Makefile等中设置-DMYREAL_TYPE=double
来从构建系统中控制它。