目錄
- 一.頭檔案重復包含編譯器報錯
- 1.簡單的理解頭檔案重復包
- 2.老流氓的理解頭檔案重復包
- 二.通過宏定義解決頭檔案重復包含
- 1.通過 #ifndef / #define 解決頭檔案重復包含
- 2.通過 #pragma once 解決頭檔案重復包含
- 三.通過插件 Visual Assist 設定快捷鍵解決檔案重復包含
- 1.安裝插件 Visual Assist
- 2.打開 VS,找到 VAssistX 選項
- 3.設定模板內容
- 4.點擊 OK,設定完成
- 5.快捷鍵測驗
- 四.猜你喜歡
零基礎 C/C++ 學習路線推薦 : C/C++ 學習目錄 >> C 語言基礎入門
一.頭檔案重復包含編譯器報錯
1.簡單的理解頭檔案重復包
假如頭檔案里有一行
int a=1;
包含兩次就變成了
int a=1;
int a=1;
于是變數重復定義,編譯器就會報錯,函式同理;
2.老流氓的理解頭檔案重復包
你用過的套套肯定不會翻過來再用一遍;
二.通過宏定義解決頭檔案重復包含
1.通過 #ifndef / #define 解決頭檔案重復包含
#ifndef __XXX_H__
#define __XXX_H__
int a=1;
#endif
上面的偽代碼如下:
如果(沒有定義宏__XXX_H__)
{
那么直接定義宏__XXX_H__
定義變數a 并且賦值為 1
}
結束程式
- 假如第一次包含時,由于沒有定義宏 __XXX_H,所以做了兩件事,定義宏 __XXX_H,然后定義 int a = 1;
- 假如第二次包含時,由于已經定義宏 __XXX_H__,所以啥都不做;
- 假如第 N 次包含時,由于已經定義宏 __XXX_H__,所以啥都不做;
- 整個程序,無論頭檔案被包含多少次,變數 a 只被定義一次,不會有重復包含重復定義的問題存在!
2.通過 #pragma once 解決頭檔案重復包含
pragmaonce 是上述方式的簡寫,好處是再也不會有兩個頭檔案因為使用了同樣的 __XXX_H__ 而被忽略了
#pragmaonce
... ... // 宣告、定義陳述句
三.通過插件 Visual Assist 設定快捷鍵解決檔案重復包含
雖然上面兩種方式都能解決 C/C++ 頭檔案重復包含沖突問題,但是還有一種更快捷的方法,直接通過 Visual Assist 設定快捷鍵完成,操作步驟如下:
1.安裝插件 Visual Assist
詳細的安裝流程請參考:安裝 Visual Studio 插件 Visual Assist
2.打開 VS,找到 VAssistX 選項
選擇頂部選單 VAssistX -> Code Generation and Refactoring -> Edit Refactoring Snippets
3.設定模板內容
選擇 Type –> All by shortcut,新建一個快捷方式:** //t ** (快捷鍵:僅供參考,怎么順手怎么來)
頭檔案模板內容如下:
#ifndef __$FILE_BASE_UPPER$_H__ //表示根據檔案名字定義宏
#define __$FILE_BASE_UPPER$_H__
$end$
#endif //__$FILE_BASE_UPPER$_H__
4.點擊 OK,設定完成
5.快捷鍵測驗
打開 vs,創建任意工程,添加頭檔案,使用快捷鍵 //t,例如,我專案添加了一個 test.h 檔案,然后使用快捷鍵 //t,如下:
#ifndef __TEST_H__
#define __TEST_H__
#endif //__TEST_H__
推薦使用方法三,因為 Visual Assist 設定快捷鍵操作起來更方便快捷, Visual Assist 插件不僅能解決頭檔案重復包含問題,還能通過快捷鍵設定檔案著作權資訊和作者資訊,參考文章:Visual Studio 設定檔案著作權資訊
四.猜你喜歡
- C 語言 陣列下標越界和記憶體溢位區別
- C 語言 指標宣告和定義
- C 語言 指標 p++ / p–
- C 語言 p++/§++/_(p++)/_p++
- C 語言 使用指標遍歷陣列
- C 語言 指標和陣列區別
- C 語言 指標陣列和陣列指標區別
- C 語言 空指標 NULL
- C 語言 void 指標
- C 語言 野指標
- C 語言 函式值傳遞和址傳遞
- C 語言 函式預設引數
- C 語言 函式不定長引數
- C 語言 函式指標
- C 語言 指標函式
- C 語言 回呼函式 callback
- C 語言 typedef
- C 語言 define 定義常量
- C 語言 define 防止頭檔案重復包含
未經允許不得轉載:猿說編程 ? C 語言 define 防止頭檔案重復包含
本文由博客 - 猿說編程 猿說編程 發布!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/297462.html
標籤:其他
