程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c++-c編譯原理,如何處理同名局部變量和全局變量

c++-c編譯原理,如何處理同名局部變量和全局變量

編輯:編程綜合問答
c編譯原理,如何處理同名局部變量和全局變量

c中,一個文件裡局部變量可以和全局變量重名。那這個文件編譯出來的.o中,這兩個變量的符號是怎麼表示的呢?不可能符號是相同的呀!c++處理這種情況時,符號表示和c一樣還是不同呢?

最佳回答:


建議看《linux平台上學C語言》這本書,底層講得挺詳細的。
在同一個.o文件裡不存在鏈接性的問題,怎麼名應該就無所謂了。對於全局變量跟局部變量,我覺得放的位置都差那麼多,隨便加個前綴就區分開了,還有局部變量可能一開始聲明的時候就被替換成地址了,編譯生成的符號表裡是沒有局部變量的(符號表是用來兩個或以上的.o文件重新鏈接定位時用的,因為局部變量根本不能被其他文件鏈接!)C++不同的編譯器所對於同樣的函數會生產不一樣的符號(這樣是為什麼能重載函數),所以不同C++編譯器出的.o文件是不能互相鏈接的,符號會出錯。這麼說不知道解了你心中的疑惑沒?那本書挺好的,解了我很多疑問,也告訴了我很多不知道的“秘密”。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved