標頭檔案被多次包含的解決辦法
明這種錯誤,考慮下面的程式碼:
#include"x.h"
#include"x.h"
顯然,這裡檔案x.h被包含了兩次,沒有人會故意編寫這樣的程式碼。但是
下面的程式碼:
#include"a.h"
#include"b.h"
看上去沒什麼問題。如果a.h和b.h都包含了一個頭檔案x.h。那麼x.h
在此也同樣被包含了兩次,只不過它的形式不是那麼明顯而已。
多重包含在絕大多數情況下出現在大型程式中,它往往需要使用很多頭文
件,因此要發現重複包含並不容易。要解決這個問題,我們可以使用條件編譯。
如果所有的標頭檔案都像下面這樣編寫:
#ifndef _HEADERNAME_H
#define _HEADERNAME_H
.//(標頭檔案內容)
#endif
那麼多重包含的危險就被消除了。當頭檔案第一次被包含時它被正常處
理符號_HEADERNAME_H被定義為1。如果標頭檔案被再次包含通過條件編譯
相關推薦
標頭檔案被多次包含的解決辦法
檔案的一個不利之處在於一個頭檔案可能會被多次包含,為了說明這種錯誤,考慮下面的程式碼:#include"x.h" #include"x.h" 顯然,這裡檔案x.h被包含了兩次,沒有人會故意編寫這樣的程式碼。但是下面的程式碼:#include"a.h" #include"b.h
防止標頭檔案被多次包含
為了避免同一個檔案被include多次 1 #ifndef方式 2 #pragma once方式 在能夠支援這兩種方式的編譯器上,二者並沒有太大的區別,但是兩者仍然還是有一些細微的區別。 方式一: #ifndef __SOMEFILE_H__ #def
標頭檔案被多次呼叫時的解決辦法
微控制器程式設計中有時會出現標頭檔案多次呼叫,編譯時導致結構體函式被重複定義的錯誤以STM3210X為例當頭檔案stm32f10x.h被多次呼叫時,會出現函式體被多次定義的錯誤,此時在標頭檔案中新增#ifndef __STM32F10X_H#define __STM32F10
關於使用cocoaPods,import匯入時第三方庫標頭檔案沒有提示問題的解決辦法
估計有很多朋友在使用Xcode在專案中匯入第三方庫時,使用的是cocoaPods,但是在專案中使用此第三方庫匯入標頭檔案時,輸入#import後,並不會聯想第三方庫標頭檔案(XXXX.h),需要我們手動輸入,很麻煩。大家可以按照下面的步驟操作,解決這個小問題: 1.選擇ta
交叉編譯找不到stdio.h標頭檔案,make menuconfig問題解決辦法
今天測試交叉編譯器總出現問題,fatal error : stdio.h No such file or directory,後來根據指導使用編譯命令 :arm-linux-gcc src.c -I 標頭檔案路徑, 能編譯通過,但是卻arm-linux-l
函式放在標頭檔案中被多次包含的重定義問題
Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 轉載請標明來源 例如一個頭檔案headfile.h這樣寫 #pragma once bool Func (){return true;} 在這個標頭檔案被多個地方包含的時候就會出
標頭檔案被重複包含的危害及解決辦法
從概念上講,標頭檔案的功能是一般用來進行申明的(等函式原型或變數引用,巨集定義)。C檔案是用來進行定義的(函式定義、變數定義)。#include 是在編譯器進行編譯之前,即在預編譯時把它後面所寫的那個檔案的內容,完完整整地、 一字不改地包含到當前的檔案中來。實際上C檔案中是C語言的原始碼,H標頭檔案裡也是C語
初夏小談:C/C++防止標頭檔案被重複包含的兩種方法及區別
防止標頭檔案被重複包含的兩種方式: 1.條件編譯的巨集 2.#pragma once 先來說說第一種: #ifndef __HEADNAME__H__ #define __HEADNAME__H__ //... //標頭檔案 #endif C/C++標準支援
include怎麼關聯標頭檔案?標頭檔案如何關聯原始檔?標頭檔案被重複包含的危害?怎麼防止重複包含?
標頭檔案(.h)的功能是一般用來進行宣告的(函式,類或變數引用,巨集定義)。 原始檔(.cpp)是用來進行定義的(函式,類定義,變數定義)。 #include 是在編譯器進行編譯之前,即在預編譯時把它後面所寫的那個標頭檔案的內容,完完整整地、 一字不改地包含到當前的原始檔中來。 &nbs
防止了標頭檔案被重複包含
【轉自】 http://hi.baidu.com/zengzhaonong/blog/item/8a8871062d481f7f03088106.html #include檔案的一個不利之處在於一個頭檔案可能會被多次包含,為了說明這種錯誤,考慮下面的程式碼: #inc
如何防止標頭檔案被重複包含或引用?
一、#pragma once ( 比較常用) 只要在標頭檔案的最開始加入這條指令就能夠保證標頭檔案被編譯一次,這條指令實際上在VC6中就已經有了,但是考慮到相容性並沒有太多的使用。 #pragmaonce是編譯相關,就是說這個編譯系統上能用,但在其他編譯系統不一定可以,也就
如何防止標頭檔案被重複包含、巢狀包含
【轉自】 http://hi.baidu.com/zengzhaonong/blog/item/8a8871062d481f7f03088106.html #include檔案的一個不利之處在於一個頭檔案可能會被多次包含,為了說明這種錯誤,考慮下面的程式碼: #inclu
如何防止標頭檔案被重複包含
在windows平臺下,有一個很方便的巨集: #pragma once 指定當前檔案在構建時只被包含(或開啟)一次,這樣就可以減少構建的時間,因為加入#pragma once後,編譯器在開啟或讀取第一個#include 模組後,就不會再開啟或讀取隨後出現的相同#includ
VScode編譯C++,標頭檔案顯示not found的解決方法
一直用codeblocks,想試試vscode,結果這個問題給我弄懵逼了。一開始以為是iostream這個標頭檔案not found,後來發現第一個標頭檔案都會這樣顯示,放到後面就不會了,然而,光這一個顯示not found(雖然並不影響編譯),就能逼死強迫症的啊~~~ 言歸正傳,這個問題解
C++標頭檔案與多檔案結構
標頭檔案 在將一個程式分解成若干個檔案時,需要考慮識別符號在其他檔案中的可見性。使用標頭檔案是一個很有效的方法。如: # include<iostream.h> 其中的iostream.h是系統定義的一個檔案,這種以“.h”命名的檔案稱為“標頭檔案”。系統定義
關於標頭檔案中的重複包含和重複定義
為了避免重複定義,一般標頭檔案中不會存放定義,只存放函式宣告和變數的宣告。但也有例外,類、inline函式和編譯時值已知的const物件可以在標頭檔案中定義,這是因為遵守“單一定義規則”(One-Definition Rule, ODR)。根據此規則, 如果對同一個類的兩個定義完全相同且出現在不同編譯單位,
怎樣防止標頭檔案被重複引用
方式一:條件編譯: #ifndef #define ......//一些宣告語句 #endif 這種方式依賴於巨集名稱不能衝突,而且這種方式可以保證同一個檔案不被包含多次,也能保證內容完全相同的兩個檔案不會不小心同時包含。但是,如果巨集名稱相同,
jq:mouseover和mouseout多次觸發解決辦法
mouseover ren div clas 結構 tro 需要 als ldr 區別: mouseover與mouseenter 不論鼠標指針穿過被選元素或其子元素,都會觸發 mouseover 事件。 只有在鼠標指針穿過被選元素時,才會觸發 mouseenter
Vue事件總線(eventBus)$on()會多次觸發解決辦法
off cti UNC 關於 span sea col on() for 項目中使用了事件總線eventBus來進行兩個組件間的通信, 使用方法是是建立eventBus.js文件,暴露一個空的Vue實例,如下: import Vue from ‘vue‘export de
jquery on()事件多次呼叫解決辦法
今天閒的沒事 寫了個時時監控input框的元件,在用on() 方法進行繫結change事件時發現出現多次呼叫的情況。 現在說說自己的解決方法,和大家分享一下: var validators = function() { $(document).on("cha