2013-10-19 75 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