首页 > 其他分享 >《在编译两个不同的库时,不想相互include头文件,但又需要用到对方的函数,可以用extern》

《在编译两个不同的库时,不想相互include头文件,但又需要用到对方的函数,可以用extern》

时间:2023-02-22 11:58:57浏览次数:48  
标签:头文件 void 库时 fun so extern include

  以下是个人理解,水平有限,可能不太准确。有问题,麻烦指出。

demo:

a.so

void a_fun(void)
{
   b_fun();
}

b.so

void b_fun(void)
{
 //略
}

b.h

void b_fun(void)

  如果a库中的文件想要使用b_fun()函数,有两种方法,一种是include b.h,另一种是直接extern b_fun()函数。

 

include的方法:

  那么就需要编译a.so的时候,b.so要提前编译。存在先后顺序。否则会提示找不到b.h这个头文件。

 

extern的方法:

  编译的时候就可以单独各编各的。只需要在其他应用程序中链接这两个库的时候,a.so才会去找b_fun的函数实现。

 

  结论:所以两个库需要相互调用,最好不要直接include对方的头文件,否则会造成依赖关系。可以用extern或者注册回调函数的方式。

 

标签:头文件,void,库时,fun,so,extern,include
From: https://www.cnblogs.com/zhuangquan/p/17143854.html

相关文章