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

Why is my compiler creating duplicate assembly functions

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

例如:

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

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

_ZN9wikipedia7article6formatE..0:

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