当我查看我的 Visual C++ 链接器为 C 函数创建的符号时,它总是以下划线开头。例如,符号int example(int)
是形式_example
。
我想知道这是否在 C 标准中指定?如果不是,那么我想知道这是由任何用于 x86/x64 的 C ABI 指定的吗?
我希望有人可以在那里启发我。
编辑:我对此感兴趣的原因是我已经看到下划线前缀至少在 x86 平台下很常见。这很巧合感觉很奇怪,所以我想知道是否有一些英特尔 x86 ABI 或类似的东西在定义这个?
正如 H2CO3 所说,标准没有指定它,但是有某些调用约定在特定平台上或多或少是一致的。对于 X86,x86 反汇编 Wikibook 中有一篇不错的文章:调用约定,但是这些不受标准规范(它甚至说编译器“经常”修饰函数名称,并且您应该始终检查特定编译器如何实现调用约定)。