0

是否有任何标准的授权名称装饰?

据我所知,大多数(全部?)符合标准的实现都会在每个导出符号的名称中添加下划线前缀。这是由 C、POSIX 或其他标准保证的吗?

4

1 回答 1

0

我不确定“标准”,但前置下划线似乎是 1970 年代非常普遍的约定。编译器在函数名称前加上下划线的原因是什么?

在 1974 年左右用 C 重写 UNIX 的时候,它的作者已经拥有大量的汇编语言库,而且修改新的 C 和 C 兼容代码的名称比返回并修复所有现有代码更容易。

如果您想与 Windows 上的 Microsoft 编译器互操作,则 C 名称是必需的(仅限 win32;win64 不使用修饰,因为它只有一个标准调用约定)。

https://docs.microsoft.com/en-us/cpp/build/reference/decorated-names

另请参阅:为什么 C 编译器在外部名称前加上下划线?

于 2017-11-02T09:22:44.030 回答