Ⅰ c語言程序編譯過程包括哪四個
C語言編譯過程分成四個步驟:
1,由.c文件到.i文件,這個過程叫預處理
2,由.i文件到.s文件,這個過程叫編譯
3,由.s文件到.o文件,這個過程叫匯編
4,由.o文件到可執行文件,這個過程叫鏈接
用gcc查看預處理過程(假設源文件叫hello.c)
gcc -o hello.i hello.c -E
然後用 vi hello.i 即可查看生成的預處理文件
按ESC 輸入:$ 跳到預處理文件 可看到hello.c源碼
宏的本質:預處理階段的單純的字元串替換
預處理階段,不考慮C語法
Ⅱ 第一個 C 語言編譯器是用什麼語言編寫的
參考 Dennis M. Ritchie 寫的 The Development of the C Language:Chistory,C 語言誕生的基本過程就是 Ken Thomson 不滿意 BCPL,於是設計了 B 語言,並且用 BCPL 為 B 語言寫了一個編譯器,然後從這個編譯器開始自舉寫新的 B 語言編譯器。貝爾實驗室的眾人在 PDP-7 上用 B 語言寫了各種各樣的東西後又不滿意 B 語言了,於是 1971 年 DMR 開始在新買的 PDP-11 上用 B 給 B 寫擴展,稱之為 NB (new B,此處省略吐槽若干),擴展著擴展著離 B 的畫風越來越遠了,就取了一個新名字變成了一門新語言—— C 語言。 1973 年夏天他們用手頭的編譯器和語言給 PDP-11 重寫了一個 Unix Kernel。C 語言大約就是這個時期成型的。
所以,可以說第一個 C 語言的編譯器是用 B 語言,或者說是擴展過的 B 語言(NB)寫的。因為是一邊改進語言一邊用改進了的編譯器這樣滾雪球寫出來的,也可以看成是 C 語言寫的?畢竟 很難確定什麼時候 C 自己變成了一門新語言……
Ⅲ c語言時是從上往下走直到遇到maid才開始編譯嗎這樣系統從上往下走把聲明的先記住再開始編譯嗎
糾正一下,是main函數。編譯時,前面除了頭文件和一些全局變數等等,都是直接略過,到main函數在開始。
Ⅳ c語言的編譯過程是什麼
c語言的編譯過程如下:
1、預處理:預處理過程實際上是處理「#」的過程:#include包含的頭文件直接拷貝到hello.c中;#define定義的宏定義進行替換,同時刪除代碼中沒有的注釋部分。2、編譯:編譯的過程實質上是將高級語言翻譯成機器語言的過程。3、匯編:匯編器是將匯編代碼轉變成機器可以執行的命令,每一個匯編語句幾乎都對應一條機器指令。匯編相對於編譯過程比較簡單,根據匯編指令和機器指令的對照表一一翻譯即可。4、鏈接:就像hello.c中使用到了C標准庫的東西「printf」,但是編譯過程只是將源文件翻譯成二進制文件而已,這個二進制文件還不能直接執行,還需要一個動作:將翻譯成的二進制文件與需要用到的庫綁定在一塊。
補充:編譯過程可分為6步:掃描(詞法分析)、語法分析、語義分析、源代碼優化、代碼生成、目標代碼優化。
Ⅳ 第一個 C 語言編譯器是用什麼語言編寫的
第一個C語言編譯器(簡單的編譯器)是用匯編完成的,後來的完整C語言編譯器是用C語言編寫的(也就是由簡單的編譯器編譯)。
Ⅵ 一個C程序 從 哪裡開始編譯
點擊compile開始編譯~
編譯順序是 頭文件,主函數~
Ⅶ 如何編譯C語言源代碼
下載一個VC2005軟體,把代碼復制到裡面,設置好C運行環境,點擊編譯,OK,然後點擊那個感嘆號,直接鏈接運行,就OK了。
Ⅷ 開發一個c語言程序要經過哪四個步驟
開發一個C語言程序需要經過的四個步驟:編輯、編譯、連接、運行。
C語言程序可以使用在任意架構的處理器上,只要那種架構的處理器具有對應的培羨纖C語言編譯器和庫,然後將C源代碼編配仿譯、連接成目標二進制文件之後即可運行。
1、預處理:輸入源程序並保存(.C文件)。
2、編譯:將源程序翻譯為目標文件(.OBJ文件)。
3、鏈接:將目標文件生成可執行文件(.EXE文件)。
4、運行:執行.EXE文件,得到運行結果。
(8)c從什麼開始編譯擴展閱讀:
C語言代碼變為程序的幾個階段:
1、首先是源代碼文件test.c和相關的頭文件,如stdio.h等被預處理器cpp預處理成一個.i文件。經過預編譯後的.i文件不包含任何宏定義,因為所有的宏已經被展開,並且包含的文件也已經被插入到.i文件中。
2、編譯過程就是把預處理完的文件進行一系列的詞法分析、語法分析、語義分析以及優化後產生相應的匯編代碼文件,這個過程往往是我們所說的整個程序的構建的核心部分,也是最復雜的部分之一。派胡
3、匯編器不直接輸出可執行文件而是輸出一個目標文件,匯編器可以調用ld產生一個能夠運行的可執行程序。即需要將一大堆文件鏈接起來才可以得到「a.out」,即最終的可執行文件。
4、在鏈接過程中,對其他定義在目標文件中的函數調用的指令需要被重新調整,對實用其他定義在其他目標文件的變數來說,也存在同樣問題。
參考資料來源:網路-c語言