周全懂得#pragma once與 #ifndef的差別。本站提示廣大學習愛好者:(周全懂得#pragma once與 #ifndef的差別)文章只能為提供參考,不一定能成為您想要的結果。以下是周全懂得#pragma once與 #ifndef的差別正文
為了不統一個文件被include屢次
1 #ifndef方法
2 #pragma once方法
在可以或許支撐這兩種方法的編譯器上,兩者並沒有太年夜的差別,然則二者依然照樣有一些纖細的差別。
方法一:
#ifndef __SOMEFILE_H__
#define __SOMEFILE_H__
... ... // 一些聲明語句
#endif
方法二:
#pragma once
... ... // 一些聲明語句
#ifndef的方法依附於宏名字不克不及抵觸,這不但可以包管統一個文件不會被包括屢次,也能包管內容完整雷同的兩個文件不會被不當心同時包括。固然,缺陷就是假如分歧頭文件的宏名不當心"撞車",能夠就會招致頭文件明明存在,編譯器卻硬說找不到聲明的狀態
#pragma once則由編譯器供給包管:統一個文件不會被包括屢次。留意這裡所說的"統一個文件"是指物理上的一個文件,而不是指內容雷同的兩個文件。帶來的利益 是,你不用再費力想個宏名了,固然也就不會湧現宏名碰撞激發的奇異成績。對應的缺陷就是假如某個頭文件有多份拷貝,本辦法不克不及包管他們不被反復包括。當 然,比擬宏名碰撞激發的"找不到聲明"的成績,反復包括更輕易被發明並修改。
方法一由說話支撐所以移植性好,方法二 可以免名字抵觸
以上這篇周全懂得#pragma once與 #ifndef的差別就是小編分享給年夜家的全體內容了,願望能給年夜家一個參考,也願望年夜家多多支撐。