管理C语言中的代码变体:更改在整个代码中重复的变量
我一直在从事一个拥有非常大数据集(以TB为单位)的项目。我现在要测试代码的不同版本 特别是(在最简单的情况下),我想更改在代码中重复的一些变量的类型(我将它们传递给函数),并且我想将它们的类型从double更改为float(以节省内存空间) 我的问题是: 管理这两种代码变体的最佳方法(我目前正在使用git)是什么 我不想使用简单的分支,因为我的想法不是在测试结束时合并,我希望保留程序的两个(甚至多个)版本。最好的方法是什么?我希望避免代码重复,并以最具伸缩性的方式进行 我曾考虑过使用#defines,但这可能是一个很好的主意,因为只有很少的变体,我希望具有尽可能多的可伸缩性 我在用C语言编程管理C语言中的代码变体:更改在整个代码中重复的变量,c,git,scalability,C,Git,Scalability,我一直在从事一个拥有非常大数据集(以TB为单位)的项目。我现在要测试代码的不同版本 特别是(在最简单的情况下),我想更改在代码中重复的一些变量的类型(我将它们传递给函数),并且我想将它们的类型从double更改为float(以节省内存空间) 我的问题是: 管理这两种代码变体的最佳方法(我目前正在使用git)是什么 我不想使用简单的分支,因为我的想法不是在测试结束时合并,我希望保留程序的两个(甚至多个)版本。最好的方法是什么?我希望避免代码重复,并以最具伸缩性的方式进行 我曾考虑过使用#defin
Edit:
typedef
在这种情况下很有用。但是如果我想根据变量类型使用不同的函数呢?我知道C++中你可以使用模板,但是在C?最好的方法是什么?您可以使用typedef
。将其放在项目中的一些常见的低级头文件中,如下所示:
typedef double real_t;
然后,只要一次,您就可以小心地将double
替换为real\u t
(您不必在任何地方都替换它,因为在某些地方它可能没有意义,例如,在调用外部函数的地方,或者在不相关的地方使用double
)
然后,要在两个版本之间切换,只需将double
替换为float
。或:
typedef MY_REAL_TYPE real_t;
然后,您可以通过在Makefile中设置
-DMYREAL\u TYPE=double
等,从构建系统中控制它。这似乎正是typedef
将用于的类型。我认为这可能是分支的情况(如果变化很大)。分支不必合并,这是您的工作流程。该分支的优点是,将有一个返回到公共原始代码的历史记录。否则,一个叉子可以工作。没有语言叫做“C/C++”,你可以用C语言编程,也可以用C++编程。这两种语言,尽管表面上有些相似,但实际上完全不同。@ MattMcNabb不在C.:“马里奥问题最初被标记为C++。