請問C++專案中程式碼是否需要拆開成不同cpp檔

若專案為 VC++6.0 的 Win32 Console Application,請問:

1. C++專案中,將所有程式碼全寫在一個cpp檔中

2. C++專案中,根據不同的功能,獨立成不同的cpp檔

請問以上兩種專案撰寫方式,最後編譯、link完之後,執行檔的執行效能是否會有差異?

1 個解答

評分
  • Inunu
    Lv 5
    1 0 年前
    最佳解答

    不會有差異.

    當 compile 結束時, 在輸出的 object 檔案會有該 .cpp 檔中每個 function 的程式碼. Function 和 global/static variable 會被付與一個 symbol 名稱以表示所定義的內容.

    當 link 結束時, 所有用到 symbol 都會被包裝到指定的輸出檔案. Symbol 之間的位置會被計算並放入執行檔或程式庫.

    也就是說, linker 只看你的 symbol 數量和定義. Cpp 或 object 檔案多少他並不在乎, 只要他找得到所有需要的 symbol 定義. 因此你兩種方式的整體輸入是相等的, 只是可能在 symbol 的排列順序上有些差異. 故整體的輸出也相等.

    不過前者在 compile 和 link 階段會減少處理上的 overhead, 後者方便理解和修改.

還有問題?馬上發問,尋求解答。