国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

C的預(yù)處理

baishancloud / 3044人閱讀

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

預(yù)定義符號

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

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

結(jié)果如下

宏定義define

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

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

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

為什么說是完全替換,請看如下代碼

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

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

要想實現(xiàn)(3+2)*5,可以用括號括起來

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

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

注意:

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

宏相對于函數(shù):

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

條件編譯

在編譯一個程序的時候我們?nèi)绻獙⒁粭l語句(一組語句)編譯或者放棄是很方便的。因為我們有條件編譯指令。
類似if判斷語句,滿足條件就編譯,不滿足條件就不參與編譯。
用#if開始,以#endif結(jié)束。

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


當然,有if的地方就有else

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


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

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

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


當然,和if-else語句一樣,#if和#endif也可以嵌套。

文件包含

通常在編寫C/C++代碼時,我們會引頭文件
頭文件的包含方式有兩種:

#include #include "stdio.h"

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

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

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/122329.html

相關(guān)文章

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

    摘要:還原的難度就在于變成模板了,因為其他的什么等是原封不動的哈哈,可是直接照抄最后鑒于本人能力有限,難免會有疏漏錯誤的地方,請大家多多包涵,如果有任何描述不當?shù)牡胤?,歡迎后臺聯(lián)系本人,有重謝 寫文章不容易,點個贊唄兄弟 專注 Vue 源碼分享,文章分為白話版和 源碼版,白話版助于理解工作原理,源碼版助于了解內(nèi)部詳情,讓我們一起學習吧研究基于 Vue版本 【2.5.17】 如果你覺得排版...

    macg0406 評論0 收藏0
  • C語言進階:程序預(yù)處理

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

    gxyz 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<