預處理到執行 C編譯流程 指令 隨手筆記

2021-10-22 12:10:54 字數 892 閱讀 4392

完成巨集替換、檔案引入、以及去除空行、注釋等,為下一步的編譯做準備。

對各種預處理命令進行處理,包含標頭檔案的包含、巨集定義的擴充套件、條件編譯的選擇等。

命令:gcc -e test.c -o test.i

-e是讓gcc在預處理結束後停止編譯,test.c為源**檔案,test.i為預處理後輸出的檔案

講預處理後的**編譯成彙編**。在這個階段主要檢查**的規範性、是否有語法錯誤等,以確定**實際要做的工作,在檢查無誤後,再把**翻譯成組合語言

編譯程式執行時,先分析,後綜合。分析,就是指詞法分析、語法分析、語義分析和中間**生成。綜合,就是指**優化和**生成。

大多數的編譯程式直接產生機器語言的目標**,形成可執行的目標檔案,也有的是先產生彙編一級的符號**檔案,再呼叫匯程式設計序進行翻譯和加工處理,最後產生可執行的機器語言目標檔案。

命令:gcc -s test.i -o test.s

-s是讓gcc在編譯結束後停止編譯過程,test.s檔案為編譯後生成的彙編**。

彙編就是把編譯階段生成的.s檔案轉換成目標**,也就是機器**(01序列)

命令:gcc -c test.s -o test.o

-c讓gcc在彙編結束後停止編譯過程,test.o檔案是彙編後生成的機器碼目標檔案。

-o本質上是乙個重新命名選線,不是用-o選項時,預設生成的是a.out檔案。

命令:./test

這裡是引用

gcc hello.c -o hello

編譯預處理指令

編譯預處理指令 開頭的是編譯預處理指令 他們不是c語言的成分,但是c餘元程式離不開他們 difine用來定義乙個巨集 difine 名字 值 注意結尾沒有分號 因為不是c語句 名字必須是乙個單詞 值可以是各種東西 在c語言的編譯器開始編譯之前,編譯預處理程式 cpp 會把程式中的名字換成值 完全的文...

C C 編譯預處理指令

眾所周知,你的程式編譯前要做的事就是掃瞄源 對其做初步的轉換,產生新的源 提供給編譯器,這個過程就叫編譯預處理。這個處理過程由預處理器來完成,預處理器是在程式真正執行前由編譯器呼叫的預處理程式。常見的預處理有以下三種 include 是一種最為常見的預處理,主要是做為檔案的引用組合源程式正文。巨集替...

C C 編譯預處理指令

眾所周知,你的程式編譯前要做的事就是掃瞄源 對其做初步的轉換,產生新的源 提供給編譯器,這個過程就叫編譯預處理。這個處理過程由預處理器來完成,預處理器是在程式真正執行前由編譯器呼叫的預處理程式。常見的預處理有以下三種 檔案包含 include 是一種最為常見的預處理,主要是做為檔案的引用組合源程式正...