亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

C的預(yù)處理

baishancloud / 3168人閱讀

摘要:結(jié)果如下宏定義格式為其作用是將完全替換為。通常在引庫(kù)里的頭文件時(shí),優(yōu)先選擇。也可以使用引庫(kù)里的頭文件,此時(shí)可以在頭文件名字前加上頭文件的絕對(duì)路徑,以增加訪問(wèn)速度。當(dāng)然,也是預(yù)處理指令。

預(yù)定義符號(hào)

	printf("%s",__FILE__);//進(jìn)行編譯的文件	printf("%d", __LINE__);//文件當(dāng)前的行號(hào)	printf("%s", __DATE__);//文件被編譯的日期	printf("%s", __TIME__);//文件被編譯的具體時(shí)間	//printf("%d", __STDC__);	//編譯器是否遵頊ASNI C協(xié)議,如果定義了則值為1,否則未定義該符號(hào)

幾種預(yù)定義符號(hào)極其作用如上,因?yàn)檫@里使用的是vs2013,沒(méi)有支持ASNI C,所以STDC未定義,在這里注釋掉,如果在gcc等編譯器下可以顯示。

結(jié)果如下

宏定義define

格式為:#define XXX ABC
其作用是將XXX完全替換為ABC。

#define MAX 123printf("%d",MAX);

執(zhí)行結(jié)果如下

為什么說(shuō)是完全替換,請(qǐng)看如下代碼

#define ADD(A,B) A*Bprintf("%d",ADD(3+2,5));

完全替換為3+2*5而不是慣性思維以為的(3+2)*5
執(zhí)行結(jié)果如下

要想實(shí)現(xiàn)(3+2)*5,可以用括號(hào)括起來(lái)

#define ADD(A,B) ((A)*(B))printf("%d",ADD(3+2,5));

執(zhí)行結(jié)果如下

注意:

  1. 宏定義define的規(guī)范寫(xiě)法為其中的語(yǔ)句盡量大寫(xiě),小寫(xiě)雖然不報(bào)錯(cuò)但是不規(guī)范。
  2. 盡量避免在宏定義中使用自增自減運(yùn)算符,以免產(chǎn)生不必要的麻煩

宏相對(duì)于函數(shù):

  1. 宏定義沒(méi)有參數(shù)和函數(shù)棧幀建立過(guò)程運(yùn)行速度要比函數(shù)快
  2. 函數(shù)需要聲明類(lèi)型,宏定義不需要,但是宏定義不夠嚴(yán)謹(jǐn)
  3. 宏功能定義無(wú)法調(diào)試
  4. 宏無(wú)法實(shí)現(xiàn)一些復(fù)雜功
  5. 宏可能會(huì)帶來(lái)運(yùn)算符優(yōu)先級(jí)問(wèn)題,容易出錯(cuò)

條件編譯

在編譯一個(gè)程序的時(shí)候我們?nèi)绻獙⒁粭l語(yǔ)句(一組語(yǔ)句)編譯或者放棄是很方便的。因?yàn)槲覀冇袟l件編譯指令。
類(lèi)似if判斷語(yǔ)句,滿(mǎn)足條件就編譯,不滿(mǎn)足條件就不參與編譯。
用#if開(kāi)始,以#endif結(jié)束。

#if 1//1為真	printf("%d",666);#endif


當(dāng)然,有if的地方就有else

#if 0//0為假	printf("%d",666);#else	printf("%d", 888);#endif


條件編譯語(yǔ)句和宏一樣,都是在編譯階段完成了。

defined也可以實(shí)現(xiàn)條件編譯,其可以判斷輸入是否定義,如果定義則為真,編譯代碼。

#if defined(MAX)//MAX未定義,所以不會(huì)執(zhí)行	printf("%d",666);#endif	printf("%d", 888);


當(dāng)然,和if-else語(yǔ)句一樣,#if和#endif也可以嵌套。

文件包含

通常在編寫(xiě)C/C++代碼時(shí),我們會(huì)引頭文件
頭文件的包含方式有兩種:

#include #include "stdio.h"

<>引頭文件的方式,編譯器只會(huì)在庫(kù)里尋找頭文件,而以“”方式引的頭文件,通常會(huì)現(xiàn)在當(dāng)前目錄下尋找頭文件,如果未找到,再去庫(kù)里尋找。
通常在引庫(kù)里的頭文件時(shí),優(yōu)先選擇<>。能免去在目錄下搜索頭文件的時(shí)間。而自己編寫(xiě)的頭文件,則會(huì)使用“”。也可以使用“”引庫(kù)里的頭文件,此時(shí)可以在頭文件名字前加上頭文件的絕對(duì)路徑,以增加訪問(wèn)速度。

當(dāng)然,#include也是預(yù)處理指令。此外還有#undef,#pragma等等,這里就不再過(guò)多介紹了,有興趣可以自行查閱。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/122329.html

相關(guān)文章

  • 【Vue原理】Compile - 源碼版 之 generate 節(jié)點(diǎn)拼接

    摘要:還原的難度就在于變成模板了,因?yàn)槠渌氖裁吹仁窃獠粍?dòng)的哈哈,可是直接照抄最后鑒于本人能力有限,難免會(huì)有疏漏錯(cuò)誤的地方,請(qǐng)大家多多包涵,如果有任何描述不當(dāng)?shù)牡胤?,歡迎后臺(tái)聯(lián)系本人,有重謝 寫(xiě)文章不容易,點(diǎn)個(gè)贊唄兄弟 專(zhuān)注 Vue 源碼分享,文章分為白話(huà)版和 源碼版,白話(huà)版助于理解工作原理,源碼版助于了解內(nèi)部詳情,讓我們一起學(xué)習(xí)吧研究基于 Vue版本 【2.5.17】 如果你覺(jué)得排版...

    macg0406 評(píng)論0 收藏0
  • C語(yǔ)言進(jìn)階:程序預(yù)處理

    摘要:程序預(yù)處理本章節(jié)研究的是,源代碼文件是如何一步步得到一個(gè)可執(zhí)行程序的。如的語(yǔ)句被稱(chēng)為預(yù)處理指令,還有注釋文本的刪除,都在此階段完成替換。目的是能夠?qū)⑺形募械拇a組合到一起成一個(gè)完整的程序。終止程序可以正常也可以意外終止程序。 ...

    gxyz 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<