**於:
編譯過程主要分為四步:
1、詞法分析(掃瞄)
執行類似於有限狀態機的演算法將源**的字元分割成一系列的記號。詞法分析產生的記號一般分為幾種:關鍵字、識別符號、字面量(數字,字串等)、特殊標記(加號,等號等)。另外,掃瞄器也完成其他一些工作,比如將識別符號存放到符號表中,將數字、字串常量存放到文字表中。
2、語法分析
將由掃瞄器產生的記號進行語法分析,從而產生語法樹。語法樹:以表示式為結點的樹。另外,在語法分析時,很多運算子的優先順序和含義也被確定下來。
3、語義分析
就是看看這個語句是否有意義。編譯器能分析的語義是靜態語義,即在編譯期間可以確定的語義。
4、中間語言的生成
源**優化器會在源**級別進行優化,進而產生中間**。中間**一般跟目標機器和執行環境是無關的,比如不包含資料的尺寸,變數的位址和暫存器的名字等。
c 編譯過程簡述
ifndef main header define main header include stdafx.h define pi 3.1415926 struct xx class xx endif例1 define pi 3.1415926 就是建立起pi和3.1415926之間的對映關係,好在編...
面試問題c
1 如何避免記憶體洩漏 2 namespace 3 如何防止記憶體洩漏 4 堆和棧的區別 5 記憶體的幾種形式 6 linux指令 1 如何避免記憶體洩漏 答 記憶體洩漏 記憶體洩漏是指由於未能釋放掉不再使用的記憶體情況,並不是指內存在物理上的消失,而是應用程式分配某段記憶體後,由於設計錯誤失去了對...
C 面試問題
一面 1 多型性都有哪些?靜態和動態,然後分別敘述了一下虛函式和函式過載 2 動態繫結怎麼實現?就是問了一下基類與派生類指標和引用的轉換問題 3 型別轉換有哪些?四種型別轉換,分別舉例說明 4 操作符過載 操作符 具體如何去定義,讓把操作符過載函式原型說一遍 5 記憶體對齊的原則?原則敘述了一下並舉...