国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++ 中pragma once 與 #ifndef _XXX_H_ #define _XXX_H_的區別

2020-01-26 14:11:03
字體:
來源:轉載
供稿:網友

C++ 中pragma once 與 #ifndef _XXX_H_ #define _XXX_H_的區別

pragma once 之前一直用的很好,今天和同事的配合中發現自己沒有真正理解pragma once。

原因:同事喜歡把公共的頭文件通過生成后事件復制到一個公共的include文件夾中。

摘抄:

#ifndef方式:   #ifndef __SOMEFILE_H__   #define __SOMEFILE_H__  1   ... ... // 一些聲明語句   #endif  

  #ifndef的方式依賴于宏名字不能沖突,這不光可以保證同一個文件不會被包含多次,也能保證內容完全相同的兩個文件不會被不小心同時包含。當然,缺點就是如果不同頭文件的宏名不小心“撞車”,可能就會導致頭文件明明存在,編譯器卻硬說找不到聲明的狀況

#pragma方式 

 #pragma once   ... ... // 一些聲明語句  

#pragma once 是個預處理指令,在頭文件的最開始加入這條指令表示:這個頭文件只被編譯一次     #pragma once則由編譯器提供保證:同一個文件不會被包含多次。注意這里所說的“同一個文件”是指物理上的一個文件,而不是指內容相同的兩個文件。帶來的好處 是,你不必再費勁想個宏名了,當然也就不會出現宏名碰撞引發的奇怪問題。對應的缺點就是如果某個頭文件有多份拷貝,本方法不能保證他們不被重復包含。當 然,相比宏名碰撞引發的“找不到聲明”的問題,重復包含更容易被發現并修正。

總結: 1. #ifndef 由語言支持所以移植性好,#pragma 可以避免名字沖突

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临沂市| 定襄县| 连城县| 龙泉市| 新安县| 西华县| 靖州| 遵化市| 吉木乃县| 静宁县| 苗栗市| 甘孜县| 九台市| 华宁县| 石景山区| 淮南市| 罗江县| 屯昌县| 洮南市| 闻喜县| 太原市| 华池县| 东宁县| 讷河市| 肥城市| 玉树县| 通河县| 海口市| 东乌珠穆沁旗| 荥阳市| 屯昌县| 醴陵市| 滁州市| 庄河市| 喀喇| 禹城市| 福建省| 行唐县| 姜堰市| 稻城县| 商洛市|