1. 程式人生 > >cpp到obj再到exe,重定義的問題

cpp到obj再到exe,重定義的問題

這裡寫圖片描述

上述過程分為兩步:
(1)每個cpp先生成各自對應的obj即編譯單元;
(2)最後通過連結器把所有obj連結成一個exe形成一個程式。
而重定義在這兩步之中都可能發生。
第一步中,如果一個cpp內不小心定義了多份(>=2)相同資料,在生成obj,還沒連結前就已經報錯了。
第二步也是最常出現重定義的地方。你可能不小心地在兩個cpp中定義了相同的資料,各自生成obj的時候並不會報錯,但是當連結的時候就會出現重定義。或者你的專案的多份cpp都include了同一份.h檔案,而這個.h檔案存在定義,一樣的,在各自生成obj的時候不會報錯(如果沒有其他的重定義的話),但是當連結的時候就會報錯。