![]() |
1
57
很难维持。更好地使用接口来抽象特定于平台的代码,而不是通过分散滥用条件编译
这不好。而是有文件
foo_psx.c:
然后有2个makefile
1.
轻微修订:
共同点h:
而您可能正在重复对的函数调用
|
![]() |
2
6
我曾经看到一条建议使用
建议有助于避免将要评论的章节已经有文档评论的情况,并且必须实施如下解决方案:
相反,这将是:
对我来说似乎是个好主意。希望我能记住来源,这样我就可以链接它:( |
![]() |
3
3
|
![]() |
4
3
我对这条规则的解释是: 您的(算法)程序逻辑不应受到预处理器定义的影响。代码的功能应该始终简洁。任何其他形式的逻辑(平台、调试)都应该可以在头文件中抽象。 这与其说是一条严格的规则,不如说是一条指导方针。 但我同意基于c语法的解决方案比预处理器更受欢迎。 |
![]() |
5
2
条件编译很难调试。人们必须知道所有的设置,才能知道程序将执行哪一块代码。
我曾经花了一周时间调试一个使用条件编译的多线程应用程序。问题是标识符的拼写不同。使用了一个模块
|
![]() |
6
2
一个合理的目标,但没有严格的规则那么伟大
然而,有很多代码看起来像下面的虚构示例,我不认为有更好的选择。我认为你引用了一条合理的指引,但不是一条伟大的金字戒律。
|
![]() |
7
1
CPP是一个独立的(非图灵完成)宏语言(通常)C或C++。因此,如果不小心,很容易混淆它和基础语言。这是通常的反对宏的论点,而不是C++模板。但是"如果定义"呢??试着去读别人的代码,你以前从未见过,那有一堆ifdef。
如果根据构建需要不同的底层行为,请尝试将其封装在底层函数中,以便在任何地方都提供一致的行为,而不是将#If内容放在更大的函数中。 |
![]() |
8
1
无论如何,支持抽象而不是条件编译。然而,任何编写过便携软件的人都可以告诉你,环境变化的数量是惊人的。一些设计原则可能会有所帮助,但有时需要在优雅和满足时间表之间做出选择。在这种情况下,可能需要妥协。 |
![]() |
9
1
考虑您需要提供完全测试代码、具有100%个分支覆盖率的情况,现在添加条件编译。 用于控制条件编译的每个唯一符号将使需要测试的代码变体数量加倍。因此,一个符号-您有两个变体。两个符号,您现在有四种不同的方式来编译代码。等等
这只适用于布尔测试,例如
|
![]() |
10
0
|
![]() |
11
0
|