2010-05-03 36 views

回答

3

編譯器不會在鏈接符號表中存儲靜態變量的名稱。就鏈接器而言,它們只是模塊中的一部分。 (在所有情況下,這可能不是100%,但實際上是這樣)

靜態變量的名稱通常包含在調試符號表中。

將.c文件提供給編譯器時,它會跟蹤所有已知符號的名稱,以便它們可以在將來的代碼中識別它們的內容。它還會記住它們,以便它可以提供有用的錯誤/警告消息,但在生成輸出文件時(除非正在生成調試符號),它幾乎忘了它們。

1

它們很可能在表格中發生了重疊,類似於如何實現重載功能。

請參閱dumpbin /symbols foo.obj如果您想查看錶格,或在Linux上使用objdump

1

它取決於編譯器,但是一些嵌入式的只是在每個重複名稱的末尾添加一個數字。這樣每個變量都有一個唯一的名字。

相關問題