欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

C++中如何防止頭文件被重復(fù)引入-創(chuàng)新互聯(lián)

這篇文章主要介紹了C++中如何防止頭文件被重復(fù)引入的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇C++中如何防止頭文件被重復(fù)引入文章都會(huì)有所收獲,下面我們一起來看看吧。

禹州ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

1) 使用宏定義避免重復(fù)引入

在實(shí)際多文件開發(fā)中,我們往往使用如下的宏定義來避免發(fā)生重復(fù)引入:

#ifndef _NAME_H
#define _NAME_H//頭文件內(nèi)容#endif

其中,_NAME_H 是宏的名稱。需要注意的是,這里設(shè)置的宏名必須是獨(dú)一無二的,不要和項(xiàng)目中其他宏的名稱相同。

當(dāng)程序中第一次 #include 該文件時(shí),由于 _NAME_H 尚未定義,所以會(huì)定義 _NAME_H 并執(zhí)行“頭文件內(nèi)容”部分的代碼;當(dāng)發(fā)生多次 #include 時(shí),因?yàn)榍懊嬉呀?jīng)定義了 _NAME_H,所以不會(huì)再重復(fù)執(zhí)行“頭文件內(nèi)容”部分的代碼。

也就是說,我們可以將前面項(xiàng)目中的 student.h 文件做如下修改:

#ifndef _STUDENT_H
#define _STUDENT_Hclass Student {//......};#endif

雖然該項(xiàng)目 main.cpp 文件中仍 #include 了 2 次 "student.h",但鑒于 _STUDENT_H 宏只能定義一次,所以 Student 類也僅會(huì)定義一次。再次執(zhí)行該項(xiàng)目會(huì)發(fā)現(xiàn),其可以正常執(zhí)行。

2) 使用#pragma once避免重復(fù)引入

除了前面第一種最常用的方式之外,還可以使用 #pragma one 指令,將其附加到指定文件的最開頭位置,則該文件就只會(huì)被 #include 一次。

我們知道,#ifndef 是通過定義獨(dú)一無二的宏來避免重復(fù)引入的,這意味著每次引入頭文件都要進(jìn)行識(shí)別,所以效率不高。但考慮到 C 和 C++ 都支持宏定義,所以項(xiàng)目中使用 #ifndef 規(guī)避可能出現(xiàn)的“頭文件重復(fù)引入”問題,不會(huì)影響項(xiàng)目的可移植性。

和 ifndef 相比,#pragma once 不涉及宏定義,當(dāng)編譯器遇到它時(shí)就會(huì)立刻知道當(dāng)前文件只引入一次,所以效率很高。

但值得一提的是,并不是每個(gè)版本的編譯器都能識(shí)別 #pragma once 指令,一些較老版本的編譯器就不支持該指令(執(zhí)行時(shí)會(huì)發(fā)出警告,但編譯會(huì)繼續(xù)進(jìn)行),即 #pragma once 指令的兼容性不是很好。

目前,幾乎所有常見的編譯器都支持 #pragma once 指令,甚至于 Visual Studio 2017 新建頭文件時(shí)就會(huì)自帶該指令。可以這么說,在 C/C++ 中,#pragma once 是一個(gè)非標(biāo)準(zhǔn)但卻逐漸被很多編譯器支持的指令。

除此之外,#pragma once 只能作用于某個(gè)具體的文件,而無法向 #ifndef 那樣僅作用于指定的一段代碼。

這里仍以前面的 "student.h" 文件為例,將其內(nèi)容修改為:

#pragma onceclass Student {//......};

再次運(yùn)行項(xiàng)目,同樣可以正常執(zhí)行。

3) 使用_Pragma操作符

C99 標(biāo)準(zhǔn)中新增加了一個(gè)和 #pragma 指令類似的 _Pragma 操作符,其可以看做是 #pragma 的增強(qiáng)版,不僅可以實(shí)現(xiàn) #pragma 所有的功能,更重要的是,_Pragma 還能和宏搭配使用。

有關(guān) _Pragma 操作符更多的功能和用法,本節(jié)不做詳細(xì)講解,這里僅介紹如何用 _Pragma 操作符避免頭文件重復(fù)引入。

當(dāng)處理頭文件重復(fù)引入問題時(shí),可以將如下語(yǔ)句添加到相應(yīng)文件的開頭:

_Pragma("once")

比如,將該語(yǔ)句添加到前面項(xiàng)目中 student.h 文件中的開頭位置,再次執(zhí)行項(xiàng)目,其可以正常執(zhí)行。

事實(shí)上,無論是 C 語(yǔ)言還是 C++,為防止用戶重復(fù)引入系統(tǒng)庫(kù)文件,幾乎所有庫(kù)文件中都采用了以上 3 種結(jié)構(gòu)中的一種,這也是為什么重復(fù)引入系統(tǒng)庫(kù)文件編譯器也不會(huì)報(bào)錯(cuò)的原因。

關(guān)于“C++中如何防止頭文件被重復(fù)引入”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“C++中如何防止頭文件被重復(fù)引入”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

分享名稱:C++中如何防止頭文件被重復(fù)引入-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)地址:http://aaarwkj.com/article14/dopgge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、商城網(wǎng)站、微信公眾號(hào)、響應(yīng)式網(wǎng)站、全網(wǎng)營(yíng)銷推廣、網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
丰满少妇亚洲中文字幕| 国产美女直播亚洲一区色| 国产又猛又黄又爽无遮挡| 午夜一区二区精品视频国产| 色国产精品一区在线观看| 亭亭丁香激情五月涩久久| 国产一区二区精品久久岳√| 欧美三级亚洲三级日韩三级| 国产精品一区二区日韩新区| 日韩欧美亚洲一区二区三区| 开心五月六月婷婷在线| 美国真人性做爰视频免费| av国产剧情在线观看| 超碰香蕉在线在线观看| 最新免费观看男女啪啪视频| 国产午夜福利av在线麻豆| 亚洲天堂日韩欧美在线一区| 黄色录像黄色片黄色片| 久久99精品国产99久久无| 国产精品伊人久久精品| 亚洲国产免费一区二区| av电影网站中文字幕| 亚洲国产欧美日韩国产| 岛国av有码高清在线观看| 欧美一区二区高清不卡| 日韩欧美国产精品专区| 国家成人午夜在线观看| 91高清国产在线播放| 亚洲成人免费电影91| 国产亚洲av麻豆精品推荐| 国产一区中文字幕在线| 国产精品美女丝袜久久久| 亚洲av欧美日韩国产| 福利午夜福利在线观看| 国内揄拍国内精品少妇国| 亚洲乱色一区二区三区丝袜| 国产高清大片一级黄色| 色偷拍亚洲偷自拍二区| 日韩人妻精品在线一区二区 | 欧美亚洲国产精品久久久| 日韩成人一级片在线观看|