假设我有这样的代码:
lib.h:
void func();
lib.cpp:
void __attribute__((weak)) func()
{
printf("original");
}
这些代码将编译成libA.a
。
clang++ lib.cpp -o libA.a
然后在我的测试单元中,我想覆盖这个func
函数,例如:
TEST.CPP:
#include "lib.h"
void func()
{
printf("override");
}
和
clang++ test.cpp -lA
但在我的结果中,输出始终为original
。
weak
静态lib函数的正确方法是什么,然后在外部覆盖它?