編程編譯時生成的obj文件和exe文件本質上有什么區別?
本質上都是2進制代碼,但是obj沒有經過鏈接的重定位,不是可執行的代碼。
而且一個obj對應一個cpp編譯單元,里面的外部符號都沒解析出來。
比如a.cpp通過b.h使用了一個b.cpp里定義的函數func();那么a.cpp生成的obj里面只會有func()這個函數名的調用而已,也就是一個(對a.obj來說的)外部符號。
只有經過鏈接成為了.exe,相應于a.obj里面的func()的調用才會更新成實際的b.obj里面的func()的實際地址。
對全局變量也是同樣的道理。
下一篇有人喜歡女衛衣嗎