社区
C++ 语言
帖子详情
关于链接器的函数匹配原则
htqx
2007-01-27 08:37:39
以前我以为和函数重载是一回事.
但是今天测试了一下,只要返回值不同,也不算链接错误.
这到底是怎么回事?
谁有更加详细的资料?
...全文
314
13
打赏
收藏
关于链接器的函数匹配原则
以前我以为和函数重载是一回事. 但是今天测试了一下,只要返回值不同,也不算链接错误. 这到底是怎么回事? 谁有更加详细的资料?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
htqx
2008-10-04
打赏
举报
回复
这个的原因:
c++语法上不能识别返回值,但是连接器可以识别。
对于连接器来说,不同返回值是不同函数。
doudouHuY
2007-01-29
打赏
举报
回复
两个文件里头的func,没特殊修饰,都是全局域。
应该是命名修饰做的手脚
晨星
2007-01-29
打赏
举报
回复
这个不是冲突,是重定义吧。
即使b.cpp中也是return 0;连接器也同样报错。
htqx
2007-01-29
打赏
举报
回复
那如何解释:
a.cpp
int func() { return 0;}
b.cpp
int func() { return 1; }
是相冲突的?
lidongri
2007-01-29
打赏
举报
回复
那是作用域不同造成的
编译器的命名类似于
func@a
func@b
但在同一个文件里就会出现错误
lidongri
2007-01-29
打赏
举报
回复
命名修饰和上面说的类似
htqx
2007-01-28
打赏
举报
回复
比如
a.cpp 定义:
void func(){return;}
b.cpp
int func() { return 1; }
vc链接不报错.
htqx
2007-01-28
打赏
举报
回复
要讨论的不是重载,而是否连接器将同名,同参数列表,不同返回值的函数视为不同的两个函数.
OOPhaisky
2007-01-28
打赏
举报
回复
参数不同不可能相同的(这样违反了c++的重载语法的基本要求).
---------------------------------------------------------------------------------
C++编译器会对函数进行“名称重整”的,重整之后的名称就会反映出参数列表的不同。
lidongri
2007-01-28
打赏
举报
回复
重载与返回值无关
例如:
void Draw();
和
int Draw();
编译器就会报错
而
void Draw();
void Draw(int i);
或
void Draw();
int Draw(int i);
就不会
todototry
2007-01-28
打赏
举报
回复
只要返回值不同,也不算链接错误.
==============================
会报错
htqx
2007-01-28
打赏
举报
回复
参数不同不可能相同的(这样违反了c++的重载语法的基本要求).
只是将返回值归入考量,还真是有点意外,不知道是不是vc自己的特点.
SammyLan
2007-01-28
打赏
举报
回复
链接器链接只要"名字"完全一样就OK了
一般编译器对函数的命名修饰根据不同调用方式有不同的命名修饰方法,但是都是跟函数名和参数有关系,而且参数里面也不包含参数类型信息,只包含参数的总字节大小信息
所以链接阶段应该跟返回值没关系,但是估计连跟参数也没关系......
不知道对不
较为深入的解析联合索引最左
匹配
原则
mysql最左
匹配
原则
的一些分析
MySQL:最左前缀
匹配
原则
在MySQL建立联合索引时会遵守最左前缀
匹配
原则
,即最左优先,在检索数据时从联合索引的最左边开始
匹配
要想理解 有一个复合索引:INDEX(a, b, c) 使用方式 能否用上索引 select * from users where a = 1 and b = ...
MySQL索引最左
匹配
原则
及优化原理
(2) 定义有外键的列一定要建立索引 : 外键列通常用于表与表之间的连接,在其上创建索引可以加快表间的连接 (3) 对于经常查询的数据列最好建立索引 ① 对于需要在指定范围内快速或频繁查询的数据列,因为索引已经排序...
史上最详细的C++
函数
重载机制
4.1 根据
函数
名确定候选
函数
集4.2 确定可用
函数
4.3 确定最佳
匹配
函数
5. 总结附录:一种C++
函数
重载机制
函数
重载 ——每个现象后面都隐藏一个本质,关键在于我们是否去挖掘 [前言]
函数
重载的重要性不言而明,...
函数
重载(最高层有多个
匹配
函数
找到,调用将被拒绝)
函数
重载的重要性不言而明,但是你知道C++中
函数
重载是如何实现的呢(虽然本文谈的是C++中
函数
重载的实现,但我想其它语言也是类似的)?这个可以分解为下面两个问题 1、声明/定义重载
函数
时,是如何解决命名冲突...
C++ 语言
64,637
社区成员
250,559
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章