《在编译两个不同的库时,不想相互include头文件,但又需要用到对方的函数,可以用extern》
2024-10-09 18:07:15
以下是个人理解,水平有限,可能不太准确。有问题,麻烦指出。
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或者注册回调函数的方式。
最新文章
- RHEL5.8配置开机自动挂载磁盘
- qt (5.60/5.70) 编译 QOCI 驱动
- Uncaught SecurityError: Failed to execute 'replaceState' on 'History': A history state object with
- 关于JS闭包,作者不详(转)
- 关于 Java Collections API 您不知道的 5 件事,第 1 部分
- 如何获得JVM执行过程中调用的方法名
- Java GUI使用exe4j打包exe文件
- 安装Hadoop及Spark(Ubuntu 16.04)
- 【stm32中断优先级--珍藏版】
- fzu 2257 saya的小熊饼干
- 简单聊聊java中如何判定一个对象可回收
- Git分支(1/5) -- 基本命令
- .Net 使用爬虫下载网络图片到本地磁盘
- oracle 远程连接不到dba用户
- 【杂谈】线程中断——Interrupt
- 前序遍历and中序遍历and后序遍历
- Openvpn配置文件详解
- 【Java安装】配置环境变量
- linux find 10天内改动过的文件
- Black Widow CodeForces - 704C (dp)