預編譯和編譯階段區別

2021-08-27 08:01:50 字數 497 閱讀 4803

一.預編譯又稱為預處理,是做些**文字的替換工作。處理#開頭的指令,比如拷貝#include包含的檔案**,#define巨集定義的替換,條件編譯等,就是為編譯做的預備工作的階段主要處理#開始的預編譯指令。

二.編譯(compilation , compile)

1、利用編譯程式從源語言編寫的源程式產生目標程式的過程。

2、用編譯程式產生目標程式的動作。 編譯就是把高階語言變成計算機可以識別的2進製語言,計算機只認識1和0,編譯程式把人們熟悉的語言換成2進製的。

例子:編譯就是把你寫的高階語言程式轉換成二進位制語言,如c語言寫的程式計算機是不能直接執行的,需要編譯成為二進位制檔案0101…才能執行,這個應該好理解。

預編譯顧名思義就是在編譯之前預處理的工作,

如程式中

#define max 255 …… int c;

c=max; …

預處理就會把程式中的max替換成255;即c=255;預編譯只是做了替換,但是而不像編譯那樣根據語法語義生成**

JS預編譯 函式預編譯和全域性預編譯

預編譯發生在函式執行前一步 建立ao物件 執行期上下文 找形參和變數宣告,將變數和形參名作為ao 屬性名,值為undefined 將實參值和形參統一 在函式體裡面找函式宣告,值賦予函式體 結果 預編譯過程 函式馬上要執行,但是還沒執行 首先建立ao物件,也就是函式它產生的儲存空間庫 ao,b und...

javascript的預編譯階段

1.變數與函式 在js中宣告乙個變數有let const var三種方式,函式有宣告函式和函式表示式兩種。2.預編譯階段做的事情 在預編譯階段,所有的var宣告的變數會被初始化為undefined,所有的宣告函式會用它的定義進行初始化,而const let宣告的變數則不會在預編譯階段執行初始化,函式...

預編譯與編譯

一c c 源 從最初的文字變為可執行檔案主要進行三大步 預編譯階段 主要是編譯器執行 文字處理工作,並不會進行語法檢查 主要執行三大類預編譯命令 巨集定義 文字替換功能,將使用了巨集的地方採取巨集定義方式直接展開 條件編譯 文字剪下功能,根據設定的條件選擇性刪除一些 片段 包含檔案 文字插入功能 i...