C 在静态库中调用函数而不实现

C 在静态库中调用函数而不实现,c,static-libraries,C,Static Libraries,我想知道,在一个静态库中,是否有可能调用一个实现在我的应用程序中而不是在库中的函数 像这样: 静态库 foo.h void foo_func(); foo.c #include "foo.h" void foo_func() { app_func(); } #include <foo.h> uint8_t flag = FALSE; uint8 main() { foo_func(); while(!flag); return 0; }

我想知道,在一个静态库中,是否有可能调用一个实现在我的应用程序中而不是在库中的函数

像这样:

静态库

foo.h

void foo_func();
foo.c

#include "foo.h"

void foo_func()
{
    app_func();
}
#include <foo.h>

uint8_t flag = FALSE;

uint8 main()
{
    foo_func();

    while(!flag);

    return 0;
}

void app_func()
{
     flag = TRUE;
}
应用程序

main.c

#include "foo.h"

void foo_func()
{
    app_func();
}
#include <foo.h>

uint8_t flag = FALSE;

uint8 main()
{
    foo_func();

    while(!flag);

    return 0;
}

void app_func()
{
     flag = TRUE;
}
#包括
uint8_t标志=假;
uint8 main()
{
foo_func();
而(!flag);
返回0;
}
void app_func()
{
flag=TRUE;
}

使用
ar
创建的静态库只是
.o
对象文件的存档。您可以调用使用
ar
创建的静态库中的任何外部函数,无论是否存在,就像调用任何
.o
文件一样。虽然这是可能的,但调用应用程序可能不是最好的设计选择。

嘿,测试有那么难吗?是的,但这也是一种非常糟糕的设置方式。告诉我们您真正的问题。最好让应用程序在运行时传递指向库的函数指针。然后它也可以与动态库一起工作。为什么这是一个糟糕的设计选择?