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

C++中怎么防止頭文件被重復引入

今天就跟大家聊聊有關(guān)C++中怎么防止頭文件被重復引入,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

成都一家集口碑和實力的網(wǎng)站建設服務商,擁有專業(yè)的企業(yè)建站團隊和靠譜的建站技術(shù),10年企業(yè)及個人網(wǎng)站建設經(jīng)驗 ,為成都成百上千家客戶提供網(wǎng)頁設計制作,網(wǎng)站開發(fā),企業(yè)網(wǎng)站制作建設等服務,包括成都營銷型網(wǎng)站建設,成都品牌網(wǎng)站建設,同時也為不同行業(yè)的客戶提供做網(wǎng)站、成都網(wǎng)站設計的服務,包括成都電商型網(wǎng)站制作建設,裝修行業(yè)網(wǎng)站制作建設,傳統(tǒng)機械行業(yè)網(wǎng)站建設,傳統(tǒng)農(nóng)業(yè)行業(yè)網(wǎng)站制作建設。在成都做網(wǎng)站,選網(wǎng)站制作建設服務商就選成都創(chuàng)新互聯(lián)。

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

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

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

其中,_NAME_H 是宏的名稱。需要注意的是,這里設置的宏名必須是獨一無二的,不要和項目中其他宏的名稱相同。

當程序中第一次 #include 該文件時,由于 _NAME_H 尚未定義,所以會定義 _NAME_H 并執(zhí)行“頭文件內(nèi)容”部分的代碼;當發(fā)生多次 #include 時,因為前面已經(jīng)定義了 _NAME_H,所以不會再重復執(zhí)行“頭文件內(nèi)容”部分的代碼。

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

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

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

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

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

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

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

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

目前,幾乎所有常見的編譯器都支持 #pragma once 指令,甚至于 Visual Studio 2017 新建頭文件時就會自帶該指令??梢赃@么說,在 C/C++ 中,#pragma once 是一個非標準但卻逐漸被很多編譯器支持的指令。

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

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

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

再次運行項目,同樣可以正常執(zhí)行。

3) 使用_Pragma操作符

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

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

當處理頭文件重復引入問題時,可以將如下語句添加到相應文件的開頭:

_Pragma("once")

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

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

看完上述內(nèi)容,你們對C++中怎么防止頭文件被重復引入有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

本文題目:C++中怎么防止頭文件被重復引入
鏈接地址:http://aaarwkj.com/article34/isggpe.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供用戶體驗、網(wǎng)站設計、、定制開發(fā)品牌網(wǎng)站建設、移動網(wǎng)站建設

廣告

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

綿陽服務器托管
国产亚洲欧美精品久久久久久| 熟女高潮av一区二区| 亚洲精品视频一区二区| 久久精品国产亚洲av不卡| av中文字幕一区二区三区| 午夜在线观看成人av| 国产91在线观看网站| 久久久久精品国产亚洲av影院| 日韩黄片一区二区三区| 蜜臀av一区二区在线观看| 亚洲欧美日韩综合一区| 开心激情欧美一区二区| 麻豆资源视频在线观看| 亚洲成在人线免费观看| 国产熟女系列一区二区三区| 在线看日本一区二区| 韩国三级伦理中文字幕| 特别黄的日本免费视频| 亚洲精品中文字幕码专区| 亚乱熟女一区二区三区| 久久国产欧美日韩精品| 久久精品亚洲一区二区| 青青草成人公开在线视频| 在线免费观看国产黄色av| 好色人妻在线播放中文字幕| 日韩中文字幕 在线播放| 日本高清免费观看一区| 亚洲中文自偷自拍另类| 白浆视频在线免费观看| 热久久视频这里只有精品| 国产91对白在线观看| 午夜精品久久久免费视频| 天堂av在线免费观看| 久久偷拍一区二区三区| 99久久精品国产国产毛片| 五月婷婷丁香综合中文字幕| 91高清国产最新地址| 日韩视频播放一区二区| 国产又粗又长又大无遮挡| 一区二区三区毛片视频| 18禁黄网站免费视频|