雷火电竞-中国电竞赛事及体育赛事平台

歡迎來(lái)到入門教程網(wǎng)!

C語(yǔ)言

當(dāng)前位置:主頁(yè) > 軟件編程 > C語(yǔ)言 >

C++ 中pragma once 與 #ifndef _XXX_H_ #define _XXX_H_的區(qū)別

來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語(yǔ)言|點(diǎn)擊:

C++ 中pragma once 與 #ifndef _XXX_H_ #define _XXX_H_的區(qū)別

pragma once 之前一直用的很好,今天和同事的配合中發(fā)現(xiàn)自己沒(méi)有真正理解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ì)本站的支持!

上一篇:數(shù)據(jù)結(jié)構(gòu)與算法中二叉樹子結(jié)構(gòu)的詳解

欄    目:C語(yǔ)言

下一篇:C++中Socket網(wǎng)絡(luò)編程實(shí)例詳解

本文標(biāo)題:C++ 中pragma once 與 #ifndef _XXX_H_ #define _XXX_H_的區(qū)別

本文地址:http://www.jygsgssxh.com/a1/Cyuyan/1630.html

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有