首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >支持ANSI-C中的多个代码基

支持ANSI-C中的多个代码基
EN

Stack Overflow用户
提问于 2011-03-07 07:59:49
回答 3查看 168关注 0票数 2

我正在进行一个项目,并使用相关的Ansi-C代码库。(让我称其为“主要”代码基)。

我现在面临一个典型的问题(如下所述),如果我手头有一种面向对象的语言,我相信我能够很容易地解决这个问题。

问题是:我必须启动多个代码库;也就是说,我必须开始支持并行代码库(将来可能更多)。所有新码基(即并行码基)的初始码基最初将与旧的(即“主”码基)码基相同。

在我们谈论'C‘语言时,我一直在考虑在代码中添加'#ifdef’语句,并在这些'ifdef‘块中编写分支-spacific代码。

希望我能把问题弄清楚(够了!),我想听听关于聪明模式的想法,这些想法将帮助我在Ansi C中优雅地处理这个问题。

干杯

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-07 08:09:11

不同的代码基之间将发生什么变化?

如果

  • 只是不同的平台,则仔细隔离平台依赖项,尽可能在所有平台上保持相同的核心代码,并将特定于平台的内容放入单独的文件中。如果要从根本上改变程序的功能,则需要研究如何在允许程序之间的差异的同时保持公共核心代码不变。

请注意,在这两种情况下,首先都需要了解将要更改的内容,并设置代码以便尽可能少的更改。通常,处理变体的最佳方法(不可避免地会有变体;否则,没有必要拥有两个或多个版本)是将不同的变体放在单独的文件中,并编译和链接正确的文件。但有时,人们认为最好将变体(或变体的一部分)放在一个文件中,并使用#ifdef样式的条件编译。

另一个关键点是把所有的东西都放在同一个版本控制系统下--尽可能长时间,或者比这长一二十年。

我所见过的最大灾难发生在不同版本停止使用公共代码库时。现在我们需要重新整合这两个代码库,十年的独立开发是一个主要的障碍。过去十五年的综合发展有起起落落,但与我们现在所面临的问题相比没有什么。啊!

票数 2
EN

Stack Overflow用户

发布于 2011-03-07 08:10:27

你可以把差异抽象化(或者至少尝试一下)。将所有特定于代码基的代码放在与程序逻辑分离的文件中。然后,您可以使用条件编译(ifdef-include),并且只需要为每个新的代码基替换特定于代码基的文件,而整个应用程序逻辑可以保持不变。

票数 0
EN

Stack Overflow用户

发布于 2011-03-07 08:16:59

作为#ifdef-based解决方案的替代或补充,您可以在SCM中维护不同的分支。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5217224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档