全局标志恢复为 C 中的原始逻辑

Posted

技术标签:

【中文标题】全局标志恢复为 C 中的原始逻辑【英文标题】:Global flag to revert to original logic in C 【发布时间】:2014-08-18 16:11:38 【问题描述】:

我的主管最近要求我准备一个解决方案,在该解决方案中,我们的应用程序中的多个逻辑可以在应用程序运行时恢复为较早的一段代码。实际上,我需要准备一些东西,比如可以动态激活的标志或指示器,以将我们应用程序中的所有代码实例从新版本切换回旧版本。

新逻辑是由我们团队的一位新成员准备的,我们担心代码投入生产后会出现内存泄漏,我们需要一个适当的解决方案,让我们能够关闭这些更改并返回必要时改成原始代码。

 if (new_code == ON)
 
    New Logic
 
 else
 
    Old logic
 

这个项目最初是为了在我们的构建过程中帮助消除构建和编译警告,因此它会影响从函数参数到变量声明的代码,因此不会有任何一种类型的代码会受到影响。我们正在使用 tuxedo 堆栈,但根据我们的一位高级开发人员的说法,不建议实施 tuxedo 配置文件来实现此更改。不过,我不知道有类似的解决方案。

有什么想法吗?谢谢!

【问题讨论】:

您的解决方案似乎可行。你在问什么?你试过了吗? 我会选择 VCS 中的一个分支,而不是其他任何东西(以及一堆废话)。但更重要的是,不管都应该注意编译警告。应该考虑 Lint 类型的警告,但实际的 compiler 警告并没有作为建议;他们会告诉你可能错误 【参考方案1】:

它会起作用吗?当然。这是个好主意吗?不,您现在有新代码的风险,加上切换代码中的错误风险,以及如果您在运行中从一个切换到另一个会发生什么的风险。你不应该这样做,它比直接部署更改更有可能造成麻烦。

你应该做什么——如果你真的担心它,不要部署它。对其进行额外的测试,直到您对它感到满意为止。然后,当您确实部署它时,如果有问题通过测试,请计划回滚到以前的版本而不进行这些更改。

【讨论】:

我们最终决定使用条件编译,让编译器标志确定这些更改是否应该处于活动状态。谢谢!【参考方案2】:

使用函数指针调用函数。 根据您的需要制作一个 API 以将函数指针更改为旧的或新的。

【讨论】:

以上是关于全局标志恢复为 C 中的原始逻辑的主要内容,如果未能解决你的问题,请参考以下文章

备份与恢复

根据Excel中的逻辑从2列中检索最大数据

Delphi TField.OnValidate 可以在不引发异常的情况下恢复原始值吗?

Delphi TField.OnValidate 可以在不引发异常的情况下恢复原始值吗?

在LVM中恢复已删除的逻辑卷

MySQL的备份与恢复具体解释