gpt4 book ai didi

c - 要模拟的弱别名

转载 作者:行者123 更新时间:2023-12-02 20:27:43 25 4
gpt4 key购买 nike

我正在尝试使用

来模拟 fn say foo
#ifdef UT_TEST
void foo(void) __attribute__ ((weak, alias ("foo_impl")));
#else
void foo(void);
#endif

但是,有没有办法在运行时而不是编译时执行此操作?由于历史原因,我无法使用 C++。

最佳答案

过去,我主要看到这个问题在构建系统级别得到解决,我认为这是一个更干净的解决方案。这样做可以避免大多数 ifdef,而是使用完整文件。在 make 中,它可能看起来像这样:

OBJS += file1.o file2.o
ifeq ($(UNIT_TEST),y)
OBJS += dummy_implementation.o
else
OBJS += real_implementation.o
endif

myprog: $(OBJS)

或更经典的 make 习语:

OBJS-y += file1.o file2.o
OBJS-$(UNIT_TEST) += dummy_implementation.o
OBJS-$(REAL_BUILD) += real_implementation.o
OBJS = $(OBJS-y)

myprog: $(OBJS)

在这种情况下,dummy_implementation.c 和 real_implementation.c 将共享一个头文件。

关于c - 要模拟的弱别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39477883/

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