程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 周全懂得#pragma once與 #ifndef的差別

周全懂得#pragma once與 #ifndef的差別

編輯:關於C++

周全懂得#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的差別就是小編分享給年夜家的全體內容了,願望能給年夜家一個參考,也願望年夜家多多支撐。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved