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

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”。