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

預處理與預編譯

發布時間: 2022-07-02 12:11:36

『壹』 什麼是預編譯,何時需要預編譯:

預編譯又稱預處理,是作代碼文本的替換工作,如文件包含#include、 宏定義、條件編譯指令
預處理,更多的可以上網搜索一下。

『貳』 預處理命令和編譯預處理是什麼關系

所謂預處理是指在進行編譯的第一遍掃描(詞法掃描和語法分析)之前所作的工作。它由預處理程序負責完成。當對一個源文件進行編譯時,系統將自動引用預處理程序對源程序中的預處理部分作處理,處理完畢自動對源程序編譯

『叄』 C語言中 「編譯時處理」 與 「預處理」 兩個概念的區別

浩強哥的教材中說的很清楚,可以參考。簡單來說,C語言程序在編譯前,其實是有一個預備工作的,這個就是「預處理」,可以理解為:人類所編寫的程序,需要轉化為機器能夠編譯的合理輸入文件。機器編譯,就是按照語法來處理語句,一些語句或者邏輯是在編譯時才有意義,才進行分析,這就是「編譯時處理」。

『肆』 預編譯的釋義

預編譯又稱為預處理,是做些代碼文本的替換工作。
處理#開頭的指令,比如拷貝#include包含的文件代碼,#define宏定義的替換,條件編譯等
就是為編譯做的預備工作的階段
主要處理#開始的預編譯指令

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

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

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

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

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

any questions?

『陸』 什麼是預編譯 何時需要預編譯 mfc面試

預編譯又稱為預處理,是做些代碼文本的替換工作

預編譯又稱為預處理,是做些代碼文本的替換工作

處理#開頭的指令,比如拷貝#include包含的文件代碼,#define宏定義的替換,條件編譯等

就是為編譯做的預備工作的階段

主要處理#開始的預編譯指令

預編譯指令指示了在程序正式編譯前就由編譯器進行的操作,可以放在程序中的任何位置。常見的預編譯指令有:

(1)#include 指令

該指令指示編譯器將xxx.xxx文件的全部內容插入此處。若用<>括起文件則在系統的INCLUDE目錄中尋找文件,若用" "括起文件則在當前目錄中尋找文件。一般來說,該文件是後綴名為"h"或"cpp"的頭文件。

注意:<>不會在當前目錄下搜索頭文件,如果我們不用<>而用""把頭文件名擴起,其意義為在先在當前目錄下搜索頭文件,再在系統默認目錄下搜索。

(2)#define指令

該指令有三種用法:

第一種是定義標識,標識有效范圍為整個程序,形如#define XXX,常與#if配合使用;

第二種是定義常數,如#define max 100,則max代表100(這種情況下使用const定義常數更好,原因見注1);

第三種是定義"函數",如#define get_max(a, b) ((a)>(b)?(a):(b)) 則以後使用get_max(x,y)就可以得到x和y中較大的數(這種方法存在一些弊病,見注2)。

第四種是定義"宏函數",如#define GEN_FUN(type) type max_##type(type a,type b){return a>b?a:b;} ,使用時,用GEN_FUN(int),則此處預編譯後就變成了 max_int(int a,int b){return a>b?a:b;},以後就可以使用max_int(x,y)就可以得到x和y中較大的數.比第三種,增加了類型的說明。

(3)#if、#else和#endif指令

這些指令一般這樣配合使用:

#if defined(標識) //如果定義了標識

要執行的指令

#else

要執行的指令

#endif

在頭文件中為了避免重復調用(比如說兩個頭文件互相包含對方),常採用這樣的結構:

#if !(defined XXX) //XXX為一個在你的程序中唯一的標識符,

//每個頭文件的標識符都不應相同。

//起標識符的常見方法是若頭文件名為"abc.h"

//則標識為"abc_h"

#define XXX

真正的內容,如函數聲明之類

#endif

熱點內容
1萬元錢能組裝個什麼配置的電腦 發布:2022-08-13 17:23:18 瀏覽:517
應用拒絕訪問 發布:2022-08-13 17:16:10 瀏覽:998
電腦機房伺服器有輻射嗎 發布:2022-08-13 17:13:48 瀏覽:159
linuxpython安裝模塊 發布:2022-08-13 17:12:10 瀏覽:657
linux任務刪除 發布:2022-08-13 17:08:54 瀏覽:112
電腦瀏覽器怎麼緩存視頻 發布:2022-08-13 17:08:50 瀏覽:975
雲手機伺服器硬體 發布:2022-08-13 16:55:08 瀏覽:392
酷派怎麼清除緩存 發布:2022-08-13 16:50:48 瀏覽:816
androidgit分支 發布:2022-08-13 16:49:03 瀏覽:389
搭建ai伺服器 發布:2022-08-13 16:47:20 瀏覽:492