2013-10-19 113 views
0

当我查看Visual C++链接器为C函数创建的符号时,它总是以下划线开头。例如int example(int)的符号的形式是_exampleC是否标准化链接器符号命名?

我想知道这是否在C标准中指定?如果没有,那么我想知道这是由x86/x64的任何C ABI指定的吗?

我希望有人可以在那里启发我。

编辑:我对此感兴趣的原因是我已经看到下划线前缀是相当普遍的,至少在x86平台下。它感到奇怪,这将是一致的,所以我想知道是否有一些英特尔x86 ABI或这样的定义呢?

+2

不,它不是由标准规定的。该标准甚至不知道“二进制”或“可执行文件”的概念。通常,这是特定**编译器**强制要求的内容。 – 2013-10-19 17:35:42

回答

0

由于H2CO3表示它没有被标准规定,但是某些调用约定在特定平台上或多或少一致。对于X86,在x86 Disassembly Wikibook: Calling Conventions中有一篇像样的文章,但这些文章不受标准的约束(甚至认为编译器“经常”装饰函数名称,并且应该总是检查特定编译器如何实现调用约定)。

+0

谢谢,这清理了很多。我一直习惯于打电话的惯例,但我不知道他们做了一些名字。 – Venom