7.6.1 链接器如何解析多重定义的全局符号
目录
P474
为啥-0.0不会被强制转换成int呢?因为转换成机器代码是编译器的事情,编译器只能看到当前文件,而当前文件中x是double,所以生成机器代码的时候,-0.0是double类型的二进制表示,而链接器虽然知道x是int,但是链接器能干的事情非常有限,不会去改变已有的机器代码
这里说的有COMMON也就是为了支持强弱机制。试想一下,假设现在有强弱机制,但是没有COMMON,编译器直接将弱全局变量(也就是没有初始化的全局变量)分配给.bss,那么链接器就可能在多个可重定位目标文件的.bss中看到名字一模一样的引用,然后.bss还要存放强全局变量(也就是初始化了的全局变量),于是链接器就没办法区分在.bss里面的到底是弱变量还是强变量了
一个好的编程习惯


浙公网安备 33010602011771号