關於c語言執行期間所做的工作,主要分為4點
1.預處理階段
關於預處理階段,編譯器主要進行了標頭檔案展開,巨集替換,條件編譯這三個過程。
開始編譯時,c語言會將標頭檔案的**嵌入到程式段中,並且對所有的巨集進行替換,**中所有的巨集將被實際的值替換。
2.編譯階段
此時編譯器會對c語言的語句進行語法檢查,所有的語法錯誤包括編譯時錯誤大多數會在此階段產生,通過檢查後編譯器才會開始將高階語言轉化為組合語言。
3.彙編階段
顧名思義,此階段程式會轉化為組合語言,之所以要變成組合語言是由於計算機元件的電氣特性決定的,組合語言可以直接操作硬體。而c語言具有出色的可移植性,可以在多種不同的硬體平台上執行,這就是嵌入式技術使用c語言的原因,因為嵌入式的實質,就是在已有的硬體平台上移植作業系統,移植的時候,需要修改的地方越少,證明移植性越好,c語言在這方面有著先天的優勢,但是其劣勢就是**的復用性,維護性,可擴充套件性較差,當然這些方面是物件導向語言的強項,各有所長,包括組合語言都是各自具有優勢的語言。
4.鏈結階段
鏈結階段的任務是把所有的目標檔案和庫檔案連線起來,形成可執行檔案。
鏈結分為編譯時鏈結,裝載時鏈結和執行是連線兩種。當然第一種是靜態的,所謂靜態的與動態的區別就是靜態鏈結在編譯時載入進了所有需要的**到程式庫中,這就意味著**變得很龐大,但是效率會更高,簡單來講就好比要去上課,所有的書都在書包裡就是靜態鏈結,這樣的好處是不管上什麼課我都可以直接拿書,而動態鏈結的是我要上c語言課,我就回家去拿,這樣效率就變得相對來說低一些,但是輕便靈活是其最大的特點,我書包很輕,走路不累,執行速度自然就上來了,gcc編譯器中可以使用 -static來強制靜態鏈結。
C語言寫的遮蔽程序執行的程式
這個是幫別人寫的。具體用途不詳。通過psapi函式列舉程序 include stdio.h include string.h include windows.h 定義函式指標 typedef bool stdcall funenumporcess dword lpidprocess,程序id dwo...
C語言hello c如何變成執行程式的
include int main printf hello world n 編譯命令 unix gcc o hello hello.c 編譯過程分4個步驟 preprocessor compiler assember,linker preprocessing phase,預處理階段 生成.i 檔案,...
c語言關閉正在執行的應用程式
原文 可以通過system 函式,呼叫dos命令taskkill實現關閉正在執行的應用程式。如system taskkill im notepad.exe 會關閉記事本應用。system taskkill f pid 1234 t 會強制結束pid為1234的程序及其子程序。關於taskkill的詳...