gpt4 book ai didi

c - 在 ANSI-C 中支持多个代码库

转载 作者:太空宇宙 更新时间:2023-11-03 23:35:23 24 4
gpt4 key购买 nike

我正在从事一个项目,该项目具有相关的 Ansi-C 代码库。 (让我称之为“主要”代码库)。

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

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

当我们谈论“C”语言时,我一直在考虑将“#ifdef”语句添加到代码中,并在这些“ifdef” block 中编写特定于分支的代码。

希望我把问题说清楚了(足够了!),我想听听关于巧妙模式的想法,这些模式可以帮助我在 Ansi C 中优雅地处理这个问题

干杯

最佳答案

不同代码库之间会发生什么变化?

  • 如果只是不同的平台,您可以仔细隔离平台依赖性,尽可能多地在所有平台上保持核心代码相同,并将特定于平台的内容放入单独的文件中。

  • 如果您打算从根本上更改程序功能,则需要弄清楚如何保持未更改代码的通用核心,同时允许程序之间存在差异。

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

另一个关键点是让一切都在同一个版本控制系统下——尽可能长的时间,或者比这长一两年。

我见过的最大灾难发生在不同版本停止使用通用代码库时。现在我们需要重新整合这两个代码库,十年的独立开发是一个主要障碍。过去 15 年的集成开发有其起起落落 - 但与我们现在面临的问题相比,这微不足道。啊!

关于c - 在 ANSI-C 中支持多个代码库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5217224/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com