日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

预处理器

發(fā)布時間:2025/7/14 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 预处理器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.


預(yù)處理器的行為就是由預(yù)處理指令(由#字符開頭的一些命令)控制的。 即#define和#include

#define指令定義了一個——用來代表其它東西的一個名字,如常量或常用的表達(dá)式。

#include指令告訴預(yù)處理器打開一個特定的文件,將它的內(nèi)容作為正在編譯的文件的一部分“包含”進(jìn)來。


C程序處理流程:

C程序—>預(yù)處理器—>修改后的C程序—>編譯器—>目標(biāo)代碼


宏定義:#define指令定義一個宏,#undef指令刪除一個宏定義。

文件包含:#include指令導(dǎo)致一個指定文件的內(nèi)容被包含到程序中。

條件編譯:#if、#ifdef、#ifndef、#endif、#elif和#else



1.?#if指令和#endif指令

在調(diào)試一個程序時,若想要顯示出特定變量的值,因此將printf函數(shù)調(diào)用添加到程序中重要的部分。一旦找到錯誤,經(jīng)常需啊喲保留這些printf函數(shù)調(diào)用,以備以后使用。條件編譯允許保留這些調(diào)用,但是讓編譯器忽略它們。

采用下面的方式。首先定義一個宏,并給它一個非零的值:

#define?DEBUG?1

宏的名字并不重要,在printf函數(shù)調(diào)用的前后加上#if和#endif:

#if?DEBUG

printf(“Value?of?i:?%d\n”,i);

#endif

在預(yù)處理過程中,#if指令會測試DEBUG的值,為非0預(yù)處理器會將printf函數(shù)保留在程序中(但#if和 ?#endif行會消失);DEBUG值若為0,預(yù)處理器則會將這三行代碼刪除。

#if指令會把沒有定義過的標(biāo)識符當(dāng)做值為0的宏對待。


2.?defined運算符

???當(dāng)defined應(yīng)用于標(biāo)識符時,若標(biāo)識符時是一個定義過的宏則返回1,否則返回0.通常與#if結(jié)合使用:

#if?defined(DEBUG)

...

#endif

僅當(dāng)DEBUG被定義成宏時,#if和endif之間的代碼會被保留在程序中。DEBUG兩邊的括號不是必須的,可以寫成如下形式:

#if?defined?DEBUG


3.?#ifdef指令和#ifndef指令

? ?#ifdef指令測試一個標(biāo)識符是否已經(jīng)定義為宏,它的使用和#if指令類似:

???#ifdef?標(biāo)識符

當(dāng)標(biāo)識符被定義為宏時需要包含的代碼

#endif

? #ifndef指令與#ifdef指令類似,但測試的事標(biāo)識符是否沒有被定義為宏:

#ifndef?標(biāo)識符?????等價于?#if?!defined(標(biāo)識符)


轉(zhuǎn)載于:https://blog.51cto.com/ty1992/1685222

總結(jié)

以上是生活随笔為你收集整理的预处理器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。