如何防止標頭檔案被重複包含
在windows平臺下,有一個很方便的巨集:
#pragma once
指定當前檔案在構建時只被包含(或開啟)一次,這樣就可以減少構建的時間,因為加入#pragma once後,編譯器在開啟或讀取第一個#include 模組後,就不會再開啟或讀取隨後出現的相同#include 模組.
另外,還可以用條件編譯語句來實現:
#ifndef "XX_H"
#define "XX_H"
<標頭檔案定義正文>
#endif
顯然後者的移植性更好一點。
相關推薦
初夏小談:C/C++防止標頭檔案被重複包含的兩種方法及區別
防止標頭檔案被重複包含的兩種方式: 1.條件編譯的巨集 2.#pragma once 先來說說第一種: #ifndef __HEADNAME__H__ #define __HEADNAME__H__ //... //標頭檔案 #endif C/C++標準支援
如何防止標頭檔案被重複包含或引用?
一、#pragma once ( 比較常用) 只要在標頭檔案的最開始加入這條指令就能夠保證標頭檔案被編譯一次,這條指令實際上在VC6中就已經有了,但是考慮到相容性並沒有太多的使用。 #pragmaonce是編譯相關,就是說這個編譯系統上能用,但在其他編譯系統不一定可以,也就
如何防止標頭檔案被重複包含、巢狀包含
【轉自】 http://hi.baidu.com/zengzhaonong/blog/item/8a8871062d481f7f03088106.html #include檔案的一個不利之處在於一個頭檔案可能會被多次包含,為了說明這種錯誤,考慮下面的程式碼: #inclu
如何防止標頭檔案被重複包含
在windows平臺下,有一個很方便的巨集: #pragma once 指定當前檔案在構建時只被包含(或開啟)一次,這樣就可以減少構建的時間,因為加入#pragma once後,編譯器在開啟或讀取第一個#include 模組後,就不會再開啟或讀取隨後出現的相同#includ
include怎麼關聯標頭檔案?標頭檔案如何關聯原始檔?標頭檔案被重複包含的危害?怎麼防止重複包含?
標頭檔案(.h)的功能是一般用來進行宣告的(函式,類或變數引用,巨集定義)。 原始檔(.cpp)是用來進行定義的(函式,類定義,變數定義)。 #include 是在編譯器進行編譯之前,即在預編譯時把它後面所寫的那個標頭檔案的內容,完完整整地、 一字不改地包含到當前的原始檔中來。 &nbs
防止了標頭檔案被重複包含
【轉自】 http://hi.baidu.com/zengzhaonong/blog/item/8a8871062d481f7f03088106.html #include檔案的一個不利之處在於一個頭檔案可能會被多次包含,為了說明這種錯誤,考慮下面的程式碼: #inc
標頭檔案被重複包含的危害及解決辦法
從概念上講,標頭檔案的功能是一般用來進行申明的(等函式原型或變數引用,巨集定義)。C檔案是用來進行定義的(函式定義、變數定義)。#include 是在編譯器進行編譯之前,即在預編譯時把它後面所寫的那個檔案的內容,完完整整地、 一字不改地包含到當前的檔案中來。實際上C檔案中是C語言的原始碼,H標頭檔案裡也是C語
C++/C中防止標頭檔案的重複包含的解決辦法及區別
為了避免同一個檔案被include多次,C/C++中有兩種方式,一種是#ifndef方式,一種是#pragma once方式。在能夠支援這兩種方式的編譯器上,二者並沒有太大的區別,但是兩者仍然還是有一些細微的區別。 方式一: #ifndef __SOMEFILE_H_
怎樣防止標頭檔案被重複引用
方式一:條件編譯: #ifndef #define ......//一些宣告語句 #endif 這種方式依賴於巨集名稱不能衝突,而且這種方式可以保證同一個檔案不被包含多次,也能保證內容完全相同的兩個檔案不會不小心同時包含。但是,如果巨集名稱相同,
防止標頭檔案被多次包含
為了避免同一個檔案被include多次 1 #ifndef方式 2 #pragma once方式 在能夠支援這兩種方式的編譯器上,二者並沒有太大的區別,但是兩者仍然還是有一些細微的區別。 方式一: #ifndef __SOMEFILE_H__ #def
標頭檔案的重複包含和變數的重複定義
為什麼會出錯呢?按照條件編譯,a.h並沒有重複包含,可是還是提示變數A重複定義了。 在這裡我們要注意一點,變數,函式,類,結構體的重複定義不僅會發生在源程式編譯的時候,在目標程式連結的時候同樣也有可能發生。我們知道c/c++編譯的基本單元是.c或.cpp檔案,各個基本單元的編譯是相互獨立的,#ifndef等
[C語言專案]防止標頭檔案和全域性變數重複定義
昨天下午將全域性變數定義在H檔案中導致連結時提示變數在多個obj檔案內重複。 解決辦法如下: 將變數移入C檔案中進行定義,然後在H檔案中加入extern在變數之前。 這樣當其它C檔案引用該全域性變數時就會去連結這個變數符號而不是重新生成。 另附防止H檔案被重複包含的處理方
C++ 防止標頭檔案重複引用
C++標頭檔案的重複引用 就有點類似於鑽石繼承(菱形繼承) 比如有 a.h b.h c.h和d.h四個標頭檔案 其中,b和c需要#include"a.h" 而d需要#include"b.h" #include"c.h" 這樣編譯的時候肯定會報錯,因為d包含了兩次a.h.
標頭檔案被多次包含的解決辦法
檔案的一個不利之處在於一個頭檔案可能會被多次包含,為了說明這種錯誤,考慮下面的程式碼:#include"x.h" #include"x.h" 顯然,這裡檔案x.h被包含了兩次,沒有人會故意編寫這樣的程式碼。但是下面的程式碼:#include"a.h" #include"b.h
標頭檔案多次包含編譯出錯
在編譯一個工程時,有多個c檔案包含同一個.h檔案 比如a.c,b.c都包含c.h(#ifndef DH #idefine DH ... #endif) 當只有a.c包含c.h時,工程沒有問題 但是a.c和b.c同時包含c.h時,工程出現了很多問題。 首先排除重複編譯的問題
C語言中自帶的標頭檔案(.h)所包含的函式
由於之前沒有好好學習過C語言,所以對其自帶標頭檔案所包含的內容總是不清楚,每次寫程式碼都是盲目的#include很多.h,現在重新整理一下,發現了不少很好的函式,以方便複習查閱。 不完全統計,C語言標
標頭檔案被多次呼叫時的解決辦法
微控制器程式設計中有時會出現標頭檔案多次呼叫,編譯時導致結構體函式被重複定義的錯誤以STM3210X為例當頭檔案stm32f10x.h被多次呼叫時,會出現函式體被多次定義的錯誤,此時在標頭檔案中新增#ifndef __STM32F10X_H#define __STM32F10
防止變數重複定義、標頭檔案重複包含、巢狀包含
【轉自】 http://hi.baidu.com/zengzhaonong/blog/item/8a8871062d481f7f03088106.html #include檔案的一個不利之處在於一個頭檔案可能會被多次包含,為了說明這種錯誤,考慮下面的程式碼: #include "x.h"#include "
C語言:解決多個C檔案包含同一標頭檔案引起的檔案重複包含問題
解決多個C檔案包含同一標頭檔案引起的檔案重複包含問題,並給出全域性變數如何定義和宣告的方法. 解決方法: 1. 定義公共檔案: global.c 和global.h 其中, global.c檔案中: #include "global.h" //定義全域性變數 int g
C/C++避免標頭檔案重複包含的方法
C/C++避免標頭檔案重複包含的方法 1. #ifndef 2. #pragma once 3. 混合使用 在實際的程式設計過程中,因為會使用多個檔案,所以在檔案中不可避免的要引入一些標頭檔案,這樣就可能會出現一個頭檔案被 include