C語言如何翻譯一個語句

C預處理器在程序執行之前查看程序(故稱之爲預處理器)。
根據程序中的預處理器指令,預處理器把符號縮寫替換成其表示的內容。預處理器可 以包含程序所需的其他文件,可以選擇讓編譯器查看哪些代碼。預處理器並不知道 C。
基本上它的工作是把一些文本轉換成另外一些文本。這樣描述預處理器無法體現它的真正效用和價值,我們將在本章舉例說明。

在預處理之前,編譯器必須對該程序進行一些翻譯處理。
首先,編譯器 把源代碼中出現的字符映射到源字符集。該過程處理多字節字符和三字符序列——字符擴展讓C更加國際化

第二,編譯器定位每個反斜槓後面跟着換行符的實例,並刪除它們。也 就是說,

把下面兩個物理行(physical line):
printf("That's wond\
erful!\n");
轉換成一個邏輯行(logical line):
printf("That's wonderful\n!");

注意,在這種場合中,“換行符”的意思是通過按下Enter鍵在源代碼文件 中換行所生成的字符,而不是指符號表徵\n。
由於預處理表達式的長度必須是一個邏輯行,所以這一步爲預處理器做 好了準備工作。一個邏輯行可以是多個物理行。
第三,編譯器把文本劃分成預處理記號序列、空白序列和註釋序列(記號是由空格、製表符或換行符分隔的項)。這裏要注意的是, 編譯器將用一個空格字符替換每一條註釋。因此,下面的代碼:

int/* 這看起來並不像一個空格*/fox;
將變成:
int fox;

而且,實現可以用一個空格替換所有的空白字符序列(不包括換行符)。最後,程序已經準備好進入預處理階段,預處理器查找一行中以#號 開始的預處理指令。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章