由多個原始檔組成的c程式,經過編輯、預處理、編譯,鏈結等階段會生成最終的可執行程式。下面哪個階段可以發現被呼叫的函式未定義?
a、預處理
b、編譯
c、鏈結
d、執行
a:預處理是
c語言程式從源**變成可執行程式的第一步,主要是
c語言編譯器對各種預處理命令進行處理,包括標頭檔案的包含、巨集定義的擴充套件、條件編譯的選擇等。
b:編譯之前,c
語言編譯器會進行詞法分析、語法分析
(-fsyntax-only) 、語義分析
,接著會把源**翻譯成中間語言,即組合語言
。編譯程式工作時,先分析,後綜合,從而得到目標程式。所謂分析,是指詞法分析和語法分析;所謂綜合是指**優化,儲存分配和**生成。
值得一提的是,大多數的編譯程式直接產生機器語言的目標**,形成可執行的目標檔案,但也有的編譯程式則先產生組合語言一級的符號**檔案,然後再呼叫匯程式設計序進行翻譯加工處理,最後產生可執行的機器語言目標檔案。
c:鏈結是處理可重定位檔案,把它們的各種符號引用和符號定義轉換為可執行檔案中的合適資訊(
一般是虛擬記憶體位址
)的過程。假如乙個程式包含多個檔案,在分別對每個源程式進行編譯並得到多個目標程式後,要把這些目標程式連線起來,同時還要同系統提供的資源(如函式庫)連線成為乙個整體,如果不出現錯誤,會得到乙個字尾為 .exe的可執行檔案
到了鏈結階段才會知道各個函式的呼叫關係,才能出現呼叫某個函式,但是該函式沒有宣告找不到的情況。
addition:
1、涉及要記憶體分配的地方,一般是在程式執行的時候才分配相應的空間,否則分配記憶體有什麼用呢。mallocd 在堆上動態分配記憶體,在執行時期。
解釋 Alpha,Beta,RC,OEM各個版本
alpha 是內部測試版,一般不向外部發布,會有很多bug.一般只有測試人員使用。beta 也是測試版,這個階段的版本會一直加入新的功能。在alpha版之後推出。rc release candidate 顧名思義麼 用在軟體上就是候選版本。系統平台上就是發行候選版本。rc版不會再加入新的功能了,主要...
軟體測試的各個階段
軟體測試的各個階段 這幾個階段其實就是乙個pdca 戴明迴圈 p plan 代表計畫,d do 代表執行,c check 代表檢查,a action 代表處理。1.測試需求 資料表明,超過50 的缺陷 於錯誤的需求,所以對於需求文件,應該遵循盡早測試的原則,對需求進行測試。a.對需求規格說明數進行要...
erp各個名詞解釋
pmc含義 就是物料控制,pmc包括pc生產計畫和mc物料計畫。erp enterprise resource planning 企業資源計畫 crm customer relational management 客戶關係管理 bpr business process reengineering 企...