在C中管理代码变量:更改在代码中重复的变量

时间:2014-10-10 06:36:45

标签: c git scalability

我一直在研究一个包含非常大的数据集的项目(大约为太字节)。我现在正想测试不同版本的代码。

特别是(在最简单的情况下),我想改变在整个代码中重复的一些变量的类型(我将它们传递给函数)并且我想将它们的类型从double更改为float(为了节省内存空间)。

我的问题是:

  

最好的方法(我目前正在使用git)管理这两种代码变体是什么?

我不想使用简单的分支,因为我的想法是在测试结束时不合并,我想要保留我的程序的两个(甚至多个)版本。最好的方法是什么?我希望避免重复代码并以最具扩展性的方式进行重复

我已经考虑过使用#defines,但这对于极少数变体来说可能是一个好主意,我希望尽可能多地具有可扩展性

我在C编程。

修改typedef在这种情况下非常有用。但是如果我想根据我的变量类型使用不同的函数呢?我知道在C ++中你可以使用模板,但在C中?什么是最好的方式?

1 个答案:

答案 0 :(得分:2)

您可以使用typedef。将它放在项目中的一些常见的低级头文件中,如下所示:

typedef double real_t;

然后你可以小心地,只需一次,将double替换为real_t到处都有意义(你不一定能替换无处不在,因为有些地方可能会没有意义,例如你调用外部函数的地方,或者使用double来表示不相关的东西。

然后,要在两个版本之间切换,只需在一个位置将double替换为float即可。或者:

typedef MY_REAL_TYPE real_t;

然后,您可以通过在Makefile等中设置-DMYREAL_TYPE=double来从构建系统中控制它。