當前位置:才華齋>計算機>C語言>

計算機二級C語言編譯預處理和動態儲存分配知識考點歸納

C語言 閱讀(2.58W)

1.1 巨集定義(不帶引數的巨集定義,帶引數的巨集定義)

計算機二級C語言編譯預處理和動態儲存分配知識考點歸納

1.編譯預處理就是對C源程式進行編譯前,由″編譯預處理程式″對預處理命令列進行處理的過程。

2.C語言中,凡是以″#″開頭的行,都稱為″編譯預處理″命令列。C語言中的編譯預處命令有:#define,#undef,#include,#if,#else,#elif,#endif,#ifdef,#ifndef,#line,#pragma,#error。這些預處理命令組成的預處理命令列必須在一行的開頭以″#″號開始,每行的未尾不得加″;″號,以區別於C語句、定義和說明語句。

3.不帶引數的巨集定義:命令的一般形式為:

#define 識別符號 字串

定義中的″識別符號″為使用者定義的識別符號,稱為巨集名。在預編譯時,C預編譯程式將出現的巨集名替換成″字串″的內容,這一過程也稱為巨集展開。

4.帶引數的巨集定義:命令的一般形式為

#define巨集名(形式引數) 字串

定義中的″字串″應包含括號中所指定的`形式引數。注意巨集名與括號之間不要加空格,否則就成為不帶引數的巨集定義了。

5.預編譯時,遇到帶實參的巨集名,則按命令列中指定的字串從左到右進行置換,原則是:遇到實參則以實參代替,非形參字元原樣保留,從而成展開後的內容。

1.2 “檔案包含”處理

1.檔案包含的一般形式為:

#include″標頭檔案名″

#include

標頭檔案名一般由C語言提供,也可以是使用者自己編寫的,標頭檔案通常用.h作為字尾。

2.當頭檔名用雙引號括起來時,系統首先在使用此命令的檔案所在的目錄中查詢被包含的檔案,找不到時,再按系統指定的標準方式檢索其它目錄;當頭檔名用尖括號括起來時,則直接按系統指定的標準檢索方式查詢被包含的檔案。

3.預編譯時,將被包含檔案的內容全部複製到包含檔案中,這就是檔案″包含處理″。

1.3 條件編譯

C語言中的條件編譯命令可對源程式程式碼的各部分有選擇地進行編譯。條件編譯主要有如下3種使用格式

使用格式1:

#ifdef識別符號

程式段1

#else

程式段2

#endif

使用格式2:

#ifndef識別符號

程式段1

#else

程式段2

#endif

使用格式3:

#if表示式

程式段1

#else

程式段2

#endif

使用格式1表示如果已定義了“識別符號”,則編譯“程式段1”,否則編譯“程式段2”;使用格式2表示如沒有定義了“識別符號”,則編譯“程式段1”,否則編譯“程式段2”;使用格式3表示如“表示式”的值為“真”時,則編譯“程式段1”,否則編譯“程式段2”。