午夜精品人妻久久久-成年美女很黄的网站-在线看片免费人成视久网app-国产精品美女无遮挡一区二区-91精品国产综合久久久久-国产的免费视频又猛又爽又刺激-在线看片免费人成视久网app-久久香蕉国产精品视频-av一区二区三区高清

運(yùn)行C程序的步驟和方法

計(jì)算機(jī)不能直接識(shí)別和執(zhí)行用高級(jí)語(yǔ)言寫(xiě)的指令 , 必須用編譯程序把C源程序翻譯成二進(jìn)制形式的目標(biāo)程序,然后再將該目標(biāo)程序與系統(tǒng)的函數(shù)庫(kù)以及其他目標(biāo)程序連接起來(lái),形成可執(zhí)行的目標(biāo)程序 。
在編好一個(gè)C源程序后,怎樣上機(jī)進(jìn)行編譯和運(yùn)行呢?一般要經(jīng)過(guò)以下幾個(gè)步驟:
(1)、上機(jī)輸入和編輯源程序 。通過(guò)鍵盤(pán)向計(jì)算機(jī)輸入程序,如發(fā)現(xiàn)有錯(cuò)誤,要及時(shí)改正 。最后將此源程序以文件形式存放在自己指定的文件夾內(nèi),文件用.c作為后綴,生成源程序文件 , 如f.c
(2)、對(duì)源程序進(jìn)行編譯 , 先用C編譯系統(tǒng)提供的“預(yù)處理器”對(duì)程序中的預(yù)處理指令進(jìn)行編譯預(yù)處理 。例如,對(duì)于#include<stdio.h>指令來(lái)說(shuō),就是將stdio.h頭文件的內(nèi)容讀進(jìn)來(lái) , 取代#include<stdio.h>行 。由預(yù)處理得到的信息和程序其他部分一起,組成一個(gè)完整的 , 可以用來(lái)進(jìn)行正式編譯的源程序,然后由編譯系統(tǒng)對(duì)該源程序進(jìn)行編譯 。
編譯的作用首先是對(duì)源程序進(jìn)行檢查,判斷它有無(wú)語(yǔ)法方面的錯(cuò)誤,如有,則發(fā)出“出錯(cuò)信息” , 告訴編程人員認(rèn)真檢查改正 。修正程序后重新進(jìn)行編譯,如有錯(cuò),再發(fā)出“出錯(cuò)信息” 。如此反復(fù)進(jìn)行,直到?jīng)]有語(yǔ)法錯(cuò)誤為止 。這時(shí),編譯程序自動(dòng)把源程序轉(zhuǎn)換為二進(jìn)制形式的目標(biāo)程序,如果不特別指定,此目標(biāo)程序一般也存放在用戶當(dāng)前目錄下,此時(shí)源文件沒(méi)有消失 。
在用編譯系統(tǒng)對(duì)源程序進(jìn)行編譯時(shí),自動(dòng)包括了預(yù)編譯和正式編譯兩個(gè)階段,一氣呵成 。用戶不必分別發(fā)出二次指令 。
(3)、進(jìn)行連接處理 。經(jīng)過(guò)編譯所得到的二進(jìn)制目標(biāo)文件(后綴為.obj)還不能供計(jì)算機(jī)直接執(zhí)行 。前面也說(shuō)明:一個(gè)程序可能包含若干個(gè)源程序文件,而編譯是以源程序文件為對(duì)象的 , 一次編譯只能得到與一個(gè)源程序文件相對(duì)于的目標(biāo)文件,它只是整個(gè)程序的一部分 , 必須把所有的編譯后得到的目標(biāo)模塊連接裝配起來(lái),再與函數(shù)庫(kù)相連接成一個(gè)整體,生成一個(gè)可供計(jì)算機(jī)執(zhí)行的目標(biāo)程序,稱為可執(zhí)行程序 , 在Visual C++中其后綴為.exe,如f.exe 。
即使一個(gè)程序只包含一個(gè)源程序文件 , 編譯后得到的目標(biāo)程序也不能直接運(yùn)行,也要經(jīng)過(guò)連接階段,因?yàn)橐c函數(shù)庫(kù)進(jìn)行連接,才能生成可執(zhí)行程序 。
以上連接的工作是由一個(gè)稱為“連接編輯程序”的軟件來(lái)實(shí)現(xiàn)的 。
【運(yùn)行C程序的步驟和方法】(4)、運(yùn)行可執(zhí)行程序,得到運(yùn)行結(jié)果 。

運(yùn)行C程序的步驟和方法

文章插圖
以上過(guò)程如圖所示,其中實(shí)線表示操作流程,虛線表示文件的輸入輸出 。例如編輯后得到一個(gè)源程序文件f.c,然后在進(jìn)行編譯時(shí)再將源程序文件f.c輸入 , 經(jīng)過(guò)編譯得到目標(biāo)程序文件f.obj,再將所有目標(biāo)模板輸入計(jì)算機(jī),與系統(tǒng)提供的庫(kù)函數(shù)等進(jìn)行連接 , 得到可執(zhí)行的目標(biāo)程序f.exe,最后把f.exe輸入計(jì)算機(jī),并使之運(yùn)行得到結(jié)果 。
一個(gè)程序從編寫(xiě)到運(yùn)行成功,并不是一次成功的,往往要經(jīng)過(guò)多次反復(fù) 。編寫(xiě)好的程序并不一定能保證正確無(wú)誤,除了用人工方式檢查外,還須借助編譯系統(tǒng)來(lái)檢查有無(wú)語(yǔ)法錯(cuò)誤 。從圖中可以看到:如果在編譯過(guò)程中發(fā)現(xiàn)錯(cuò)誤,應(yīng)當(dāng)重新檢查源程序,找出問(wèn)題,修改源程序,并重新編譯,直到無(wú)錯(cuò)為止 。有時(shí)編譯過(guò)程未發(fā)現(xiàn)錯(cuò)誤,能生成可執(zhí)行程序,但是運(yùn)行的結(jié)果不正確 。一般情況下,這不是語(yǔ)法方面的錯(cuò)誤,而可能是程序邏輯方面的錯(cuò)誤,例如計(jì)算公式不正確、賦值不正確等 , 應(yīng)當(dāng)返回檢查源程序,并改正錯(cuò)誤 。
為了編譯、連接和運(yùn)行C程序,必須要有相應(yīng)的編譯系統(tǒng) 。目前使用的很多C編譯系統(tǒng)都是集成環(huán)境(IDE)的,把程序的編輯、編譯、連接和運(yùn)行等操作全部集中在一個(gè)界面上進(jìn)行,功能豐富 , 使用方便,直觀易用 。
寫(xiě)出源程序后可以用任何一種編譯系統(tǒng)對(duì)程序進(jìn)行編譯和連接工作,只要用戶感到方便、有效即可 。20世紀(jì)90年代,Turbo C 2.0用得比較多,但Turbo C 2.0是用于DOS環(huán)境的,在進(jìn)入Turbo C集成環(huán)境后,不能用鼠標(biāo)進(jìn)行操作,主要通過(guò)鍵盤(pán)選擇菜單 , 不大方便 。有的人改用Turbo C++ 3.0,它具有方便、直觀和易用的界面 , 雖然它也是DOS環(huán)境下的集成環(huán)境,但可以用鼠標(biāo)操作菜單,因此在Windows環(huán)境下使用也很方便 。近年來(lái),不少人用Visual C++對(duì)C程序進(jìn)行編譯 。Visual C++ 6.0既可以對(duì)C++程序進(jìn)行編譯,也可以對(duì)C程序進(jìn)行編譯 。
不應(yīng)當(dāng)只會(huì)使用一種編譯系統(tǒng),無(wú)論用哪一種編譯系統(tǒng),都應(yīng)當(dāng)能舉一反三 , 在需要時(shí)會(huì)用其他編譯系統(tǒng)進(jìn)行工作