預處理命令

2021-09-25 23:58:39 字數 1615 閱讀 2043

1.檔案包含:

#include

系統檔案用:「<>」

建立的檔案用:「""」

2.巨集定義:

#define

3.條件編譯:

#if, #elif, #else, #endif、#ifdef, #ifndef

分三種情況:

1、情況1:

#ifdef _***x

...程式段1...

#else

...程式段2...

#endif

這表明如果識別符號 _***x已被 #define 命令定義過,則對程式段1進行編譯;否則對程式段2進行編譯。

例: #define num

.............

.............

.............

#ifdef num

printf("之前num有過定義啦!:) \n");

#else

printf("之前num沒有過定義!:( \n");

#endif

2、情況2: 

#ifndef _***x 

...程式段1... 

#else 

...程式段2... 

#endif

這裡使用了 #ifndef,表示的是 if not def。當然是和 #ifdef 相反的狀況(如果沒有定義識別符號 _***x,那麼執行程式段1,否則執行程式段2)。

3、情況3:

#if 常量

...程式段1...

#else

...程式段2...

#endif 

這裡表示,如果常量為真(非零),執行程式段1,否則執行程式段2。

可以將測試程式碼段加進來。當需要開啟測試的時候,只要將常量變1就好了。而不要測試的時候,只要將常量變0。

4、情況4:

#if 條件 1

程式碼段 1

#elif  條件 2

程式碼段 2

#elif 條件 n

程式碼段 n

#else

程式碼段 n+1

#endif

運用:假設我們已在程式首部定義 #ifdef debug與 #ifdef test:

1.利用 #ifdef/3endif將某程式功能模組包括進去,以向某使用者提供該功能。

在程式首部定義 #ifdef hnld:

#ifdef hnld

#include"n166_hn.c"

#endif

如果不願向別的使用者提供該功能,則在編譯之前將首部的hnld加一下劃線即可。

2.在每乙個子程式前加上標記,以便追蹤程式的執行。

#ifdef debug

printf(" now is in hunan !");

#endif

3.避開硬體的限制。有時一些具體應用環境的硬體不一樣,但限於條件,本地缺乏這種裝置,於是繞過硬體,直接寫出預期效果。具體做法是:

#ifndef test

i=dial(); 

//程式除錯執行時繞過此語句

#else 

i=0;

#endif

除錯通過後,再遮蔽test的定義並重新編譯,即可發給使用者使用了。

預處理命令

和 操作符是和 define 巨集使用的.使用 使在 後的首個引數返回為乙個帶引號的字串.例如,命令 define to string s s將會使編譯器把以下命令 cout to string hello world endl 理解為 cout hello world endl 使用 鏈結 前後的...

預處理命令

我們可以在c源程式中插入傳給編譯程式的各中指令,這些指令被稱為預處理器指令,它們擴充了程式設計的環境。現把常用的預處理命令總結如下 1.預處理程式 按照ansi標準的定義,預處理程式應該處理以下指令 if ifdef ifndef else elif endif define undef line ...

預處理命令

ansi c標準規定可以在c源程式中加入一些 預處理命令 來改進程式設計環境,提高程式設計效率。這些預處理指令都是由ansi c統一規定的,但是它並不是c語言本身的組成部分,不能直接對其進行編譯。c語言和其它高階程式語言的乙個重要區別就是可以使用預處理指令和它的預處理功能。預處理是指由預處理程式負責...