C語言中常見預編譯指令的使用以及標頭檔案的定義

2021-09-26 13:56:26 字數 2297 閱讀 7674

#ifdef《識別符號》

...//程式段1

#else

...//程式段2

#endif

其中#else也可以省略,一般可以利用#ifdef debug...不需要編譯的程式段... #endif這樣的寫法將一些我們暫時不需要用到得程式段進注釋,方便除錯程式。

ifndefif not defined的簡寫,屬於巨集定義的一種;基本的程式格式如下:

#ifndef 《識別符號》   //先測試該**識別符號**是否被巨集定義過

#define 《識別符號》

程式段1; //如果該識別符號沒有被巨集定義過,定義該識別符號,並編譯程式段 1

...#else

程式段2; //如果該識別符號已經定義過了則編譯程式段2的語句,不再編譯程式段 1

...#endif //必須和#ifndef配合使用,否則會報錯

假如現在我在某個工程下寫了乙個temp.c的檔案,並且想建立乙個對應的標頭檔案來直接呼叫其中的函式,那首先得新建乙個檔案,檔名命名為temp.h,一般標頭檔案的定義格式如下:

#ifndef 《識別符號》

#define 《識別符號》

......//程式段

......

#endif

對於識別符號來說,一般命名為頭檔名的大寫,並在最前面加下劃線,檔名中的「.」也用下劃線代替,如下:

#ifndef _temp_h

#define _temp_h

...... //包含 c 函式宣告和巨集定義等

#endif

使用預處理指令#include可以引用使用者和系統標頭檔案。

這種形式用於引用系統標頭檔案,比如上面引用的系統標準輸入輸出庫stdio.h,它在系統目錄的標準列表中搜尋名為stdio.h的檔案。

這種形式用於引用使用者標頭檔案,比如上面我們自己定義的標頭檔案temp.h,它在包含當前檔案的目錄中搜尋名為temp.h的檔案。

所以說習慣用#include這種方式引用各種標頭檔案的話,在編譯的時候就有可能會報錯,有些標頭檔案它在系統目錄的標準列表中是搜尋不到的,如果採用#include "file.h"這種方式可能編譯就不會報錯(報錯也有可能是其他原因,不一定就是引用方式有問題)。

以上是參考網上的說法加個人拙見,水平有限,如果有不對的地方還請指正。

通常用來定義乙個資料型別,如下:

typedef

unsigned

char u8;

u8 i=

100;

在這裡用u8表示資料型別unsigned char,這樣既直觀又簡潔;

它不僅可以定義一般的資料型別,像結構體等等這些都可以,如下:

#include

typedef

struct box

;int

main()

輸出結果:200

我們通常使用#define 來進行巨集定義操作,在程式中如果大量的使用某一變數,不妨將它進行一下巨集定義,這樣在修改程式的時候回方便很多;

如下:

#include

typedef

unsigned

char u8;

#define length 5

#define init

intmain()

return0;

}

輸出結果:12

345如下:

#include

#define s(a,b) a*b

intmain()

輸出結果:s=40

關於函式的巨集定義:巨集定義的函式會提高**的執行速度(因為不需要再跑到另外乙個位址空間上去呼叫函式)程式在編譯的時候就已經將巨集定義的函式插入到**呼叫處了,所以如果你呼叫乙個巨集定義的函式十次,編譯後的檔案相對正常函式呼叫的編譯檔案就會增大;相反,呼叫函式雖然會增加時間成本,但是記憶體不會增大,不管你呼叫多少次。

c語言中條件編譯相關的預編譯指令

條件編譯是根據實際定義巨集 某類條件 進行 靜態編譯的手段。可根據表示式的值或某個特定巨集是否被定義來確定編譯條件。最常見的條件編譯是防止重複包含標頭檔案的巨集,形式跟下面 類似 1 ifndef abcd h 2 define abcd h34 some declaration codes56 e...

c語言中條件編譯相關的預編譯指令

條件編譯是根據實際定義巨集 某類條件 進行 靜態編譯的手段。可根據表示式的值或某個特定巨集是否被定義來確定編譯條件。最常見的條件編譯是防止重複包含標頭檔案的巨集,形式跟下面 類似 1 ifndef abcd h 2 define abcd h34 some declaration codes56 e...

C語言中條件編譯相關的預編譯指令

本文主要介紹c語言的條件編譯指令 條件編譯是根據實際定義巨集 某類條件 進行 靜態編譯的手段。可根據表示式的值或某個特定巨集是否被定義來確定編譯條件。最常見的條件編譯是防止重複包含標頭檔案的巨集,形式跟下面 類似 ifndef abcd h define abcd h some declaratio...