目錄
零基礎 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 防止頭文件重復包含
本文由博客 - 猿說編程 猿說編程 發布!