首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++ 編譯器如何定位 main 函數入口

     編輯:程式設計綜合問答

編譯鏈接視角

  1. 編譯階段:每個 .cpp 獨立編譯為目標文件 .obj/.o,內含符號表(定義的函數、變量)與重定位表(未定義的外部引用)。
  2. 鏈接階段:鏈接器匯總所有目標文件與庫文件的符號表。
    • 系統啟動代碼(CRT)中包含對 main 的外部引用(call main)。
    • 你的某個 .cpp 定義了 main,其目標文件符號表導出 main 定義。
    • 鏈接器匹配引用與定義,將 call main 的地址重定位為實際 main 地址,生成可執行文件入口點。

關鍵點

  • 程序**必須且只能有一個** main 定義(或 wmain/WinMain 等平台特定入口)。
  • 多文件項目中,main 所在文件無特殊要求,鏈接器自動尋找。
  • 若無 main 定義,鏈接器報錯 undefined reference to main。

這就是編譯器/鏈接器通過符號解析機制找到程序入口的全過程。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved