我目前正在编写一个包含单独测试构建的 C 项目。
测试是不同的 C 进程,它们使用源代码来测试我的代码 (TDD) 中定义的每个函数。
我想在这些测试中进行猴子修补。我花了一些时间看看它可以做什么,我认为最简单的选择是使用 gcc 属性功能:https ://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Function-Attributes.html
对于测试构建,我希望我的所有函数都是弱的(IE,我想要的效果就像我__attribute__ (( weak))
在 C 文件的任何函数声明之前写的一样。)
我想知道是否有一种方法可以在默认情况下将这个弱属性作为编译选项传递,而不是在每次需要时手动进行。现在我正在使用一个宏来测试构建是否在测试中,如果是,则在我想要的每个函数之前添加这一行。我宁愿避免复杂化源代码只是为了允许一些测试功能。
google 上的这个主题被重复使用相同的琐碎属性所污染,但我找不到任何设置属性默认值的方法。
但是,我发现这本书https://link.springer.com/chapter/10.1007%2F978-1-4302-0704-7_4可能包含解决方案,但我不会为此支付 30 美元。所以我在这里问这个问题。
有些人可能认为这是一个坏主意,但在我的情况下,我认为这很好。请记住,我的测试套件由许多与我的代码链接的单声道 C 文件组成,并且请记住,正常的构建不会受到新的测试构建选项的影响。