C語言預處理實戰

2021-09-29 08:29:17 字數 1159 閱讀 5381

標頭檔案件包含

1.1 #include <> 和 #include"「的區別:<>專門用來包含系統提供的標頭檔案(就是系統自帶的,不是程式設計師自己寫的),」"用來包含自己寫的標頭檔案;更深層次來說:<>的話c語言編譯器只會到系統指定目錄(編譯器中配置的或者作業系統配置的尋找目錄,譬如在ubuntu中是/usr/include目錄,編譯器還允許用-i來附加指定其他的包含路徑)去尋找這個標頭檔案(隱含意思就是不會找當前目錄下),如果找不到就會提示這個標頭檔案不存在。

1.2「「包含的標頭檔案,編譯器缺省會先在當前目錄下尋找相應的標頭檔案,如果沒找到然後再到系統指定目錄去尋找,如果還沒找到則提示檔案不存在。

總結+注意:規則雖然允許用雙引號來包含系統指定目錄,但是一般的使用原則是:如果是系統指定的自帶的用<>,如果是自己寫的在當前目錄下放著用」」,如果是自己寫的但是集中放在了一起專門存放標頭檔案的目錄下將來在編譯器中用-i引數來尋找,這種情況下用<>。

1.3標頭檔案包含的真實含義就是:在#include的那一行,將xx.h這個標頭檔案的內容原地展開替換這一行#include語句。過程在預處理中進行。

注釋2.1 注釋是給人看的,不是給編譯器看的。

2.2 編譯器既然不看注釋,那麼編譯時最好沒有注釋的。實際上在預處理階段,預處理器會拿掉程式中所有的注釋語句,到了編譯器編譯階段程式中其實已經沒有注釋了。

條件編譯

3.1 有時候我們希望程式有多種配置,我們在源**編寫時寫好了各種配置的**,然後給個配置開關,在源**級別去修改配置開關來讓程式編譯出不同的效果。

3.2 條件編譯中用的兩種條件判定方法分別是#ifdef 和 #if

區別:#ifdef ***判定條件成立與否時主要是看***這個符號在本語句之前有沒有被定義,只要定義了(我們可以直接#define ***或者#define *** 12或者#define *** yyy)這個符號就是成立的。

的格式是:#if (條件表示式),它的判定標準是()中的表示式是否為true還是flase,跟c中的if語句有點像。

用法1:

#define num

int main(void)

如果是num,那麼yyy是不參與編譯的。

用法2:

#define num 1

int main(void)

{#if (num==1)

***#else

yyy#endif

C語言預處理

c語言中編譯預處理的三種形式的命令 巨集定義,檔案包含,條件編譯命令。1 巨集定義主要是 define,undef 如下 define pi 3.1415926 不帶引數的巨集定義 define max a,b a b?a b 帶引數的巨集定義 說明 巨集定義在c語言與c 語言中是相通的。下面舉例說...

C語言預處理

預處理 系統自動自動呼叫預處理程式對程式中 號開頭的預處理部分進行處理,處理完畢後可以進城源程式的編譯階段。預定義 一些預定義符號 常用於除錯 file 正在預編譯的源檔名 line 當前行號 只有這個是整數常量,其他是字串常量 function 當前所在函式名 date 當前日期 time 當前時...

c語言預處理

預處理可以包含 1 巨集定義指令 2 標頭檔案包括指令 3 條件編譯指令 4 編譯程式可以識別的特殊符號 巨集定義 define undef 檔案包含 include 條件編譯 if ifdef else elif endif等 其他 line error program等 注意事項 1 在c語言中...