Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
管理C语言中的代码变体:更改在整个代码中重复的变量_C_Git_Scalability - Fatal编程技术网

管理C语言中的代码变体:更改在整个代码中重复的变量

管理C语言中的代码变体:更改在整个代码中重复的变量,c,git,scalability,C,Git,Scalability,我一直在从事一个拥有非常大数据集(以TB为单位)的项目。我现在要测试代码的不同版本 特别是(在最简单的情况下),我想更改在代码中重复的一些变量的类型(我将它们传递给函数),并且我想将它们的类型从double更改为float(以节省内存空间) 我的问题是: 管理这两种代码变体的最佳方法(我目前正在使用git)是什么 我不想使用简单的分支,因为我的想法不是在测试结束时合并,我希望保留程序的两个(甚至多个)版本。最好的方法是什么?我希望避免代码重复,并以最具伸缩性的方式进行 我曾考虑过使用#defin

我一直在从事一个拥有非常大数据集(以TB为单位)的项目。我现在要测试代码的不同版本

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

我的问题是:

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

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

我曾考虑过使用#defines,但这可能是一个很好的主意,因为只有很少的变体,我希望具有尽可能多的可伸缩性

我在用C语言编程


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++。