語言 | 字節關係 | 標準 |
---|---|---|
英語 | 一個字節表示一個文本字符 | ASCII |
漢字 | 兩個字節表示一個文本字符 | GB23十二、BIG五、Unicode... |
下圖爲hello.c的ASCII碼錶示
有關編碼的小知識:
GB2312編碼:簡體中文漢字編碼國家標準,漢字採用雙字節編碼。程序員
BIG5編碼:臺灣地區繁體中文標準字符集,採用雙字節編碼。函數
GBK編碼:1995年發佈的漢字編碼國家標準,是對GB2312編碼的擴充,對漢字採用雙字節編碼。包含國家標準GB13000-1中的所有中日韓漢字,和BIG5編碼中的全部漢字。編碼
GB18030編碼:2000年發佈的漢字編碼國家標準,是對GBK編碼的擴充,覆蓋中文、日文、朝鮮語和中國少數民族文字。GB18030字符集採用單字節、雙字節和四字節三種方式對字符編碼。兼容GBK和GB2312字符集。spa
Unicode編碼:國際標準字符集,它將世界各類語言的每一個字符定義一個惟一的編碼,以知足跨語言、跨平臺的文本信息轉換。翻譯
預處理過程主要處理那些源代碼中以#開始的預編譯指令,主要處理規則以下:
①將全部的#define刪除,而且展開全部的宏定義;
②處理全部條件編譯指令,如#if,#ifdef等;
③處理#include預編譯指令,將引用的頭文件插入到該預編譯指令的位置。
④刪除全部的註釋//和 /**/;
⑤添加行號和文件標識,如#2 「hello.c」 2,以便於編譯時編譯器產生調試用的行號信息及用於編譯時產生編譯錯誤或警告時可以顯示行號信息;
⑥保留全部的#pragma編譯器指令,由於編譯器需要使用它們;調試
生成彙編語言文件(彙編語言:以文本格式描述低級機器指令),以下圖code
將彙編語言翻譯成機器指令(機器指令是一串二進制碼)對象
連接器ld將各個目標文件組裝在一塊兒,解決符號依賴、庫依賴關係,並生成可執行文件。
如hello.c程序調用了printf函數,而printf函數存在於一個printf.o的文件中,而ld就負責將這個文件以某種形式合併到hello.o程序中,並最終獲得hello文件。blog