问题描述
我正在查看编译器为 C 文件生成的 cod 文件,并注意到同一个函数被定义了两次,除了其中一个将 ..0
附加到损坏的名称并具有 {{1} } 和 .globl
也是如此。该函数仅在 C 文件中定义一次。我认为这是为了使其中 1 个在文件外部可见?为什么编译器会这样做?
例如:
.protected
对比
# -- Begin _ZN9wikipedia7article6formatE
.text
# mark_begin;
.align 16,0x90
.protected _ZN9wikipedia7article6formatE
.globl _ZN9wikipedia7article6formatE
_ZN9wikipedia7article6formatE:
解决方法
icc 编译器以针对不同的处理器多次编译相同的函数并将启动代码放入运行时使用的代码而闻名。我怀疑这就是这里发生的事情。