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