7.6.1 链接器如何解析多重定义的全局符号

目录

P474

为啥-0.0不会被强制转换成int呢?因为转换成机器代码是编译器的事情,编译器只能看到当前文件,而当前文件中xdouble,所以生成机器代码的时候,-0.0double类型的二进制表示,而链接器虽然知道xint,但是链接器能干的事情非常有限,不会去改变已有的机器代码

这里说的有COMMON也就是为了支持强弱机制。试想一下,假设现在有强弱机制,但是没有COMMON,编译器直接将弱全局变量(也就是没有初始化的全局变量)分配给.bss,那么链接器就可能在多个可重定位目标文件的.bss中看到名字一模一样的引用,然后.bss还要存放强全局变量(也就是初始化了的全局变量),于是链接器就没办法区分在.bss里面的到底是弱变量还是强变量了
一个好的编程习惯
image

posted @ 2025-08-05 11:45  最爱丁珰  阅读(5)  评论(0)    收藏  举报