为什么我的编译器会创建重复的汇编函数

问题描述

我正在查看编译器为 C 文件生成的 cod 文件,并注意到同一个函数被定义了两次,除了其中一个将 ..0 附加到损坏的名称并具有 {{1} } 和 .globl 也是如此。该函数仅在 C 文件中定义一次。我认为这是为了使其中 1 个在文件外部可见?为什么编译器会这样做?

例如:

.protected

对比

# -- Begin  _ZN9wikipedia7article6formatE
    .text
# mark_begin;
       .align    16,0x90
    .protected _ZN9wikipedia7article6formatE
    .globl _ZN9wikipedia7article6formatE
_ZN9wikipedia7article6formatE:

解决方法

icc 编译器以针对不同的处理器多次编译相同的函数并将启动代码放入运行时使用的代码而闻名。我怀疑这就是这里发生的事情。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...