當前位置:首頁 » 編程軟體 » 編譯原理預處理

編譯原理預處理

發布時間: 2022-05-17 20:56:35

❶ 預處理是在編譯之前完成的是什麼意思 是在我按下編譯按鈕之前

呵呵,當然不是。
我來描述一下當你按下IDE,即集成開發環境中的編譯按鈕的時候,後台發生了什麼,你就會明了。
我們所說的編譯,比較籠統。嚴格或者說是原始意義上的編譯是指將源代碼翻譯成機器二進制碼。其實真正完成從源代碼到機器碼,要分為幾個階段的,具體情況要看是什麼語言,還有編譯器提供的擴展性特性。但是一般情況下都包含一下幾個階段;

首先,是預編譯。這時候不是真正的編譯,而是預處理,比如說進行宏展開。
接著就是編譯。這是比較粗糙的說法,因為編譯階段也可以分為詞法分析、語法分析、語言分析、中間代碼產生、代碼優化、產生機器碼等階段,這個是編譯原理課程的內容。

所以當你按下編譯按鈕的時候,編譯環境會進行預編譯,然後才是真正的編譯。

現代的圖形界面集成開發環境的出現和流行,使得編譯的過程往往被很多人所忽視。

any questions?

❷ 什麼叫編譯器預處理

在正式編譯前的處理。比如
#define a 100
那麼在編譯器把代碼編譯成機器碼之前,他會把所有a出現的地方變成100,在進行編譯。

❸ 編譯原理實驗 編寫一個對C語言的源程序預處理程序。

注釋行對程序運行沒有任何關系

❹ 編譯原理 怎麼編寫C++程序去掉多餘的空格,換行,跳格(編譯原理 詞法分析預處理)

你的程序里已經有了相應的功能(即過濾多餘換行、空格、跳格tab等):

if(ch==10){ // ch=10表明讀入的是換行
fin.get(ch); // 繼續讀,覆蓋剛才讀入的字元,完成過濾功能,下同
while(ch==32 || ch==9 || ch==13) { // ch=32表明是空格,ch=9是tab, ch=13是回車
fin.get(ch);
}

❺ C/C++ 的預編譯原理是什麼為什麼要用預編譯

為了防止程序在實際應用當中出現錯誤

❻ 編譯原理中預處理子程序的主要功能

你好預處理的主要功能有
對宏定義的展開
對各種define和parameter的展開
對include文件的讀取
刪除注釋和不需要的代碼

❼ 從預處理、編譯、匯編到鏈接,編譯系統都作了哪些工作使用哪些工具生成了哪些文件

這個問題可煩可簡,可深可淺。
對於編譯執行語言而言:
我所知的籠統過程有
(1)源代碼==》目標代碼==》可執行程序
(資源==》目標代碼)

(2)源代碼==》中間代碼==》目標代碼==》可執行程序
第(1)種一般的為低級匯編採用的模式,第一個主要步驟統稱為Assembly(匯編),由「匯編程序」(或稱匯編編譯器)完成,其包含預處理操作,生成的主要文件是目標文件,當然在生成目的文件前還有許多輔助文件,一般會被「匯編程序」臨時生成,用完即刪除,不指定控制選項的話最終用戶是看不到這些文件的,有哪些中間臨時文件,用處是什麼可以查看「匯編編譯器」的幫助選項得到。第二個主要步驟就是link(鏈接),其將目標代碼文件,鏈接庫里的目標代碼塊整合為可執行代碼,中間也臨時生成一些中間文件,如映射文件等,同樣可通過鏈接器的選項查看。
當然,在一些高級匯編里還會有資源編譯器,其將各種資源轉為(編譯為)目標文件(作為鏈接器的輸入)
第(2)種一般是高級語言採用的模式,但有些比較高級的直接跳過中間代碼由源代碼生成目標代碼,其就跟(1)類似,只是此時第一個主要步驟不叫「匯編」而稱compile(編譯),低級匯編的步驟一「匯編」也可稱」編譯「。如果有中間代碼生成,這中間代碼就是匯編代碼,此後續處理就同(1)了,此時的中間代碼其實也就是臨時文件中的一種。

概述:源代碼到目標代碼的過程通常稱為編譯,而目標代碼到可執行程序的過程稱問鏈接。
或將兩個過程統稱為代碼的編譯(全稱應為編譯連接),這涉及具體的語境,事實上編譯器如VC的cl.exe若沒有指定/c(只生產目標代碼選項),其就是編譯連接的統一過程(cl會調用相應的鏈接器),若指定,則只有編譯過程(只生成目標代碼而不鏈接稱可執行程序)

上述編譯執行類語言開發平台所開發生成的程序一般稱為」非託管類程序「
而對於託管類程序(如.NET平台語言C#,VB.NET,JVM平台的java等)
其雖然也有編譯過程,但其直接將源代碼轉為中間代碼而不是目標代碼(此時不是匯編代碼更不是機器碼,而是可被.NET或JVM引擎解釋執行的代碼)

可參看編譯原理等相關教材,阿門。。。

❽ C語言中 預處理文件(#define),宏定義(#define)兩個寫法一樣有什麼區別一定採納

宏定義是預處理的,預處理的不止是宏定義。包括你包含的頭文件,預處理的定義在以後你學到編譯原理這門課的時候會解釋,他是編譯之前做的一件事情。總之,宏定義跟預處理不是同一概念,只是宏定義在編譯的過程中是預處理的。 望採納!

熱點內容
ip查伺服器商家 發布:2025-05-14 00:33:37 瀏覽:211
雲伺服器布 發布:2025-05-14 00:27:55 瀏覽:77
吃雞最佳配置怎麼看 發布:2025-05-14 00:25:32 瀏覽:225
oraclesql效率 發布:2025-05-14 00:17:40 瀏覽:601
cifjava代碼 發布:2025-05-14 00:10:34 瀏覽:212
泰國電視劇密碼在哪裡看 發布:2025-05-13 23:54:22 瀏覽:481
安卓用郵件下完保存在哪裡 發布:2025-05-13 23:52:31 瀏覽:479
解壓美食蛋糕 發布:2025-05-13 23:36:25 瀏覽:354
php含有字元 發布:2025-05-13 23:32:08 瀏覽:184
如何找出蘋果手機已連接wifi密碼 發布:2025-05-13 23:22:52 瀏覽:264