我正在进行一个项目,并使用相关的Ansi-C代码库。(让我称其为“主要”代码基)。
我现在面临一个典型的问题(如下所述),如果我手头有一种面向对象的语言,我相信我能够很容易地解决这个问题。
问题是:我必须启动多个代码库;也就是说,我必须开始支持并行代码库(将来可能更多)。所有新码基(即并行码基)的初始码基最初将与旧的(即“主”码基)码基相同。
在我们谈论'C‘语言时,我一直在考虑在代码中添加'#ifdef’语句,并在这些'ifdef‘块中编写分支-spacific代码。
希望我能把问题弄清楚(够了!),我想听听关于聪明模式的想法,这些想法将帮助我在Ansi C中优雅地处理这个问题。
干杯
发布于 2011-03-07 08:09:11
不同的代码基之间将发生什么变化?
如果
请注意,在这两种情况下,首先都需要了解将要更改的内容,并设置代码以便尽可能少的更改。通常,处理变体的最佳方法(不可避免地会有变体;否则,没有必要拥有两个或多个版本)是将不同的变体放在单独的文件中,并编译和链接正确的文件。但有时,人们认为最好将变体(或变体的一部分)放在一个文件中,并使用#ifdef样式的条件编译。
另一个关键点是把所有的东西都放在同一个版本控制系统下--尽可能长时间,或者比这长一二十年。
我所见过的最大灾难发生在不同版本停止使用公共代码库时。现在我们需要重新整合这两个代码库,十年的独立开发是一个主要的障碍。过去十五年的综合发展有起起落落,但与我们现在所面临的问题相比没有什么。啊!
发布于 2011-03-07 08:10:27
你可以把差异抽象化(或者至少尝试一下)。将所有特定于代码基的代码放在与程序逻辑分离的文件中。然后,您可以使用条件编译(ifdef-include),并且只需要为每个新的代码基替换特定于代码基的文件,而整个应用程序逻辑可以保持不变。
发布于 2011-03-07 08:16:59
作为#ifdef-based解决方案的替代或补充,您可以在SCM中维护不同的分支。
https://stackoverflow.com/questions/5217224
复制相似问题