AFAIK,我們可以在不同的函數中有兩個同名的靜態變量?這些如何由編譯器和符號表管理?他們的身份如何獨立管理?在系統標識的不同功能中,具有相同名稱的靜態變量如何?
3
A
回答
3
編譯器不會在鏈接符號表中存儲靜態變量的名稱。就鏈接器而言,它們只是模塊中的一部分。 (在所有情況下,這可能不是100%,但實際上是這樣)
靜態變量的名稱通常包含在調試符號表中。
將.c文件提供給編譯器時,它會跟蹤所有已知符號的名稱,以便它們可以在將來的代碼中識別它們的內容。它還會記住它們,以便它可以提供有用的錯誤/警告消息,但在生成輸出文件時(除非正在生成調試符號),它幾乎忘了它們。
1
它們很可能在表格中發生了重疊,類似於如何實現重載功能。
請參閱dumpbin /symbols foo.obj
如果您想查看錶格,或在Linux上使用objdump
。
1
它取決於編譯器,但是一些嵌入式的只是在每個重複名稱的末尾添加一個數字。這樣每個變量都有一個唯一的名字。
相關問題
- 1. 如何在具有相同名稱的變量的靜態函數中訪問全局靜態變量
- 2. 不同類型的具有相同名稱的變量輸入功能
- 3. 區分具有相同名稱的不同文件系統
- 4. 具有相同名稱的PHP變量
- 5. 不同交換機機箱中的變量不能具有相同的名稱?
- 6. 如何收集具有相同名稱的Django靜態文件?
- 7. 使用不同的變量具有相同的JavaScript功能
- 8. 是否有可能有兩個具有相同名稱的不同變量?
- 9. 如何選擇共享相同標識但具有不同名稱的記錄?
- 10. 全球和$ _SESSION具有相同名稱的變量都相同
- 11. JavaScript變量名稱相同的使用功能名稱
- 12. 處理具有相同名稱的兩個不同的功能中的Doxygen
- 13. JPA如何識別兩個具有相同名稱但不同包中的類?
- 14. 瓶路由到具有相同名稱的功能在不同的模塊
- 15. 在JavaScript中,創建具有相同值但名稱不同的7個變量
- 16. 具有相同變量名稱的變量作用域?
- 17. 預處理功能不同的名稱相同的功能
- 18. 如何區分具有相同名稱的靜態全局變量和外部全局變量?
- 19. 功能變得聲明具有相同名稱
- 20. 變量與內部功能相同的名稱改變
- 21. R:2層的功能具有相同名稱的2周不同的包
- 22. 爲什麼不同的標題具有相同的名稱?
- 23. 如何從具有相同名稱的mysql不同的表
- 24. 在Python中的不同功能中使用相同的變量
- 25. 不能在方法中使用相同的變量名稱
- 26. 具有相同標記名稱和不同值的xml文件
- 27. 一個方法中具有相同名稱的多個變量
- 28. 具有相同類名的變量?
- 29. 具有相同名稱的功能是做什麼的?
- 30. 在2個不同列中標識具有相同值的行