1. 程式人生 > >《C和指標》第2章 基本概念

《C和指標》第2章 基本概念

2.1 環境
在ANSI C的任何一種實現中,存在兩種不同的環境。翻譯環境(translation environment),原始碼被轉換為可執行的機器指令。執行環境(execution environment),它用於實際執行程式碼。標準明確說明,這兩種環境不必位於同一臺機器上。
2.1.1 翻譯
翻譯階段由幾個步驟組成,組成一個程式的每個(有可能是多個)原始檔通過編譯過程分別轉換為目的碼(object code)。然後,各個目標檔案由連結器(linker)捆綁在一起,形成一個單一而完整的可執行程式。連結器同時也會引入標準C函式庫中任何被該程式所用到的函式,而且它也可以搜尋程式設計師個人的程式庫,將其中需要使用的函式也連結到程式中。圖2.1描述了這個過程。
編譯過程本身也是由級個階段組成,首先是前處理器(preprocessor)處理。在這個階段,前處理器在原始碼上執行一些文字操作。例如,用實際值代替#define指令定義的符號以及讀入由#include指令包含的檔案的內容。
然後,原始碼經過解析(parse),判斷它的語句的意思。第2個階段是產生絕大多數錯誤和警告資訊的地方。隨後,便產生目的碼。目的碼是機器指令的初步形式,用於實現程式的語句。如果我們在編譯程式的命令列中加入了要求進行優化的選項,優化器(optimizer)就會對目的碼進一步進行處理,使它效率更高。優化過程需要額外的時間,所以在程式除錯完畢並追被生成正式產品之前一般不進行這個過程。至於目的碼是直接產生的,還是先以組合語言語句的形式存在,然後經過一個獨立的階段編譯成目標檔案,對我們來說並不重要。
在這裡插入圖片描述


一、檔名約定
儘管標準並沒有制定晚間的取名規則,但大多數環境都存在你必須遵守的檔名命名約定。C原始碼通常保存於以.c副檔名命名的檔案中。由#include指令包含到C原始碼的檔案被稱為標頭檔案,通常具有副檔名.h。
二、編譯和連結
Windows整合開發環境是一個完整的獨立程式設計工具,它包括原始碼編輯器、偵錯程式和編譯器。

2.2 詞法規則
詞法規則就像英語中的拼寫規則,決定你在源程式中如何形成單獨的字元片段,也就是標記(token)。
一個ANSI C程式由生命和函式組成。函式定義了需要執行的工作,而宣告則描述了函式和(或)函式將要操作的資料型別(有時候是資料本身)。註釋可以散佈於原檔案的各個地方。
2.2.1 字元
三字母詞(trigrph)比如:??( ??)
轉義序列(escape sequence)或字元轉義(character escape):由一個反斜槓\加上一或多個其他字元組成。
? 在書寫連續多個問號時使用,防止它們被解釋為三字母詞、
" 用於表示一個字串常量內部的雙引號。
’ 用於表示字元常量’。
\ 用於表示一個反斜槓,防止它被解釋為一個轉義序列符。
2.2.2 註釋
2.2.3 自由形式的原始碼
2.2.4 識別符號
識別符號(identifier)就是變數、函式、型別等的名字。它們由大小寫字母、數字和下劃線組成,但是不能以數字開頭。
2.2.5 程式的形式

2.3 程式風格
2.4 總結
2.5 警告的總結
1.字串常量中的字元被錯誤地解釋為三字母。
2.編寫得糟糕的註釋可能會意外地中止語句。
3.註釋的不適當結束。
2.6 程式設計提示的總結
良好的程式風格和文件將使程式更容易閱讀和維護。