gpt4 book ai didi

c - 为所有函数设置 GCC 默认属性(让所有函数符号变弱以用于猴子补丁)

转载 作者:行者123 更新时间:2023-12-04 10:15:45 24 4
gpt4 key购买 nike

我目前正在编写一个包含单独测试构建的 C 项目。

这些测试是不同的 C 进程,它们使用源代码来测试我的代码 (TDD) 中的每个定义的函数。

我想在这些测试中修补猴子。我花了一些时间来看看它可以做什么,我认为最简单的选择是使用 gcc 属性功能:https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Function-Attributes.html

对于测试版本,我希望我的所有函数都是弱函数(即,我想要的效果与我在 C 文件的任何函数声明前写 __attribute__ (( weak)) 的效果相同。)

我想知道是否有办法在默认情况下将这个弱属性作为编译选项传递给weak,而不是每次需要时手动执行。
现在我正在使用一个宏来测试构建是否在测试中,如果是,则在我想要的每个函数之前添加这一行。我宁愿避免复杂化源代码只是为了允许一些测试功能。

google 上的这个话题被重复使用相同的琐碎属性所污染,但我找不到任何设置属性默认值的方法。

然而,我找到了这本书https://link.springer.com/chapter/10.1007%2F978-1-4302-0704-7_4可能包含解决方案,但我不会为此支付 30 美元。所以我在这里问这个问题。

有些人可能认为这是一个坏主意,但在我的情况下,我认为这很好。请记住,我的测试套件由许多链接到我的代码中的单声道 C 文件组成,并记住正常构建不会受到新的测试构建选项的影响。

最佳答案

跟风怎么样?

  • 您制作单独的文件(我们称之为weak.h),其中所有符号都需要以
  • 的形式转换为weak 格式。
    #pragma weak func1 #pragma weak func2 #pragma weak func3
    ...
  • 在测试编译期间,您添加默认包含以下 this
  • gcc -include weak.h ...
    我自己从未尝试过这种方法,但是这样做不会影响您的代码,这似乎是您最想要的

    聚苯乙烯

    刚刚尝试过,对于几个符号源文件似乎可以在 Ubuntu 18.04 x64 上运行

    关于c - 为所有函数设置 GCC 默认属性(让所有函数符号变弱以用于猴子补丁),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61065671/

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