C++ 中pragma once 與 #ifndef _XXX_H_ #define _XXX_H_的區(qū)別
C++ 中pragma once 與 #ifndef _XXX_H_ #define _XXX_H_的區(qū)別
pragma once 之前一直用的很好,今天和同事的配合中發(fā)現(xiàn)自己沒有真正理解pragma once。
原因:同事喜歡把公共的頭文件通過(guò)生成后事件復(fù)制到一個(gè)公共的include文件夾中。
摘抄:
#ifndef方式: #ifndef __SOMEFILE_H__ #define __SOMEFILE_H__ 1 ... ... // 一些聲明語(yǔ)句 #endif
#ifndef的方式依賴于宏名字不能沖突,這不光可以保證同一個(gè)文件不會(huì)被包含多次,也能保證內(nèi)容完全相同的兩個(gè)文件不會(huì)被不小心同時(shí)包含。當(dāng)然,缺點(diǎn)就是如果不同頭文件的宏名不小心“撞車”,可能就會(huì)導(dǎo)致頭文件明明存在,編譯器卻硬說(shuō)找不到聲明的狀況
#pragma方式
#pragma once ... ... // 一些聲明語(yǔ)句
#pragma once 是個(gè)預(yù)處理指令,在頭文件的最開始加入這條指令表示:這個(gè)頭文件只被編譯一次 #pragma once則由編譯器提供保證:同一個(gè)文件不會(huì)被包含多次。注意這里所說(shuō)的“同一個(gè)文件”是指物理上的一個(gè)文件,而不是指內(nèi)容相同的兩個(gè)文件。帶來(lái)的好處 是,你不必再費(fèi)勁想個(gè)宏名了,當(dāng)然也就不會(huì)出現(xiàn)宏名碰撞引發(fā)的奇怪問(wèn)題。對(duì)應(yīng)的缺點(diǎn)就是如果某個(gè)頭文件有多份拷貝,本方法不能保證他們不被重復(fù)包含。當(dāng) 然,相比宏名碰撞引發(fā)的“找不到聲明”的問(wèn)題,重復(fù)包含更容易被發(fā)現(xiàn)并修正。
總結(jié): 1. #ifndef 由語(yǔ)言支持所以移植性好,#pragma 可以避免名字沖突
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- C語(yǔ)言編程技巧 關(guān)于const和#define的區(qū)別心得
- c++ 盡量不要使用#define 而是用const、enum、inline替換。
- c++ const引用與非const引用介紹
- C++中的類型轉(zhuǎn)換static_cast、dynamic_cast、const_cast和reinterpret_cast總結(jié)
- C/C++中static,const,inline三種關(guān)鍵字詳細(xì)總結(jié)
- C++中const的實(shí)現(xiàn)機(jī)制深入分析
- C/C++中宏定義(#define)
- C/C++中的typedef和#define詳解
- C++中const與#define的利弊分析
相關(guān)文章
C++數(shù)據(jù)結(jié)構(gòu)之實(shí)現(xiàn)鄰接表
這篇文章主要為大家詳細(xì)介紹了C++數(shù)據(jù)結(jié)構(gòu)之實(shí)現(xiàn)鄰接表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04
C語(yǔ)言修煉之路初識(shí)分支句?循環(huán)助本心下篇
現(xiàn)實(shí)生活中我們經(jīng)常需要根據(jù)不同的條件做出不同的選擇。程序設(shè)計(jì)中也需要根據(jù)條件來(lái)選擇不同的程序進(jìn)行處理,這稱之為分支結(jié)構(gòu),當(dāng)條件表達(dá)式不存在時(shí),它被假設(shè)為真。您也可以設(shè)置一個(gè)初始值和增量表達(dá)式,一般情況下,C?程序員偏向于使用?for(;;)?結(jié)構(gòu)來(lái)表示一個(gè)無(wú)限循環(huán)2022-03-03
淺談十進(jìn)制小數(shù)和二進(jìn)制小數(shù)之間的轉(zhuǎn)換
下面小編就為大家?guī)?lái)一篇淺談十進(jìn)制小數(shù)和二進(jìn)制小數(shù)之間的轉(zhuǎn)換。小編覺得挺不錯(cuò)的現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01
c++如何控制輸出浮點(diǎn)數(shù)小數(shù)點(diǎn)后若干位
這篇文章主要介紹了c++如何控制輸出浮點(diǎn)數(shù)小數(shù)點(diǎn)后若干位問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09

