返回信息流在编译时编译器是如何知道在头文件中声明的函数是定义在哪个函数库中的?
求大家解答
这是一条镜像帖。来源:北邮人论坛 / cpp / #91178同步于 2016/4/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
关于头文件中函数的查找问题
byr10086
2016/4/21镜像同步13 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 FromMars 的大作中提到: 】
: 搜索顺序: 本工程目录 > 编译器的include目录 > PATH环境变量指定的目录
: 匹配到就返回,没有匹配到就报错
:
你说的这是搜索头文件吗? 我想知道怎么查找在头文件中声明的函数的定义
你是说在LouZhuLove.cpp 里 #include <canglaoshi> 之后怎么在 canglaoshi的实现 找到 canglaoshi提供的 action()方法 ?
【 在 byr10086 的大作中提到: 】
: 你说的这是搜索头文件吗? 我想知道怎么查找在头文件中声明的函数的定义
【 在 FromMars 的大作中提到: 】
: 你是说在LouZhuLove.cpp 里 #include <canglaoshi> 之后怎么在 canglaoshi的实现 找到 canglaoshi提供的 action()方法 ?
我想知道编译器怎么知道去哪个函数库里找 action() 方法的实现
我好像被调戏了。。。
你不是已经include<canglaoshi>了吗 里面有声明……
文本文件生成执行文件分两步走(其实是3步)
预编译->编译->链接 搞清楚这三步,你大概就不会问这样的问题了?
【 在 byr10086 的大作中提到: 】
:
: 我想知道编译器怎么知道去哪个函数库里找 action() 方法的实现
: 我好像被调戏了。。。
【 在 FromMars 的大作中提到: 】
: 你不是已经include<canglaoshi>了吗 里面有声明……
: 文本文件生成执行文件分两步走(其实是3步)
: 预编译->编译->链接 搞清楚这三步,你大概就不会问这样的问题了?
include 只是把头文件(里面是库函数的声明)include 进源文件,当链接的时候编译器怎么知道去哪里(哪个函数库)找头文件中的声明的函数的实现呢?
在.so .lib或者.dll里 函数重定位
之前浏览过一本书 程序员的自我修养 里边有较详细的讲解
【 在 byr10086 的大作中提到: 】
:
: include 只是把头文件(里面是库函数的声明)include 进源文件,当链接的时候编译器怎么知道去哪里(哪个函数库)找头文件中的声明的函数的实现呢?
【 在 FromMars 的大作中提到: 】
: 在.so .lib或者.dll里 函数重定位
: 之前浏览过一本书 程序员的自我修养 里边有较详细的讲解
是要挨个函数库去查找吗?
【 在 byr10086 的大作中提到: 】
:
: 是要挨个函数库去查找吗?
默认只会搜索libc.so。这个库特别大里有C标准库里几乎所有的函数。如果你要用到别的库,你要用命令行告诉链接器。