C 標頭檔案包含順序

2021-09-28 18:46:29 字數 1123 閱讀 2644

使用標準的標頭檔案包含順序可增強可讀性, 避免隱藏依賴。

***.h

c 系統檔案

c++ 系統檔案

其他庫的 .h 檔案

本專案內 .h 檔案

***.h

本專案內 .h 檔案

其他庫的 .h 檔案

c++ 系統檔案

c 系統檔案

為了減少隱藏依賴,同時標頭檔案和其實現檔案匹配,應該先包含其首選項(即其對應的標頭檔案)。

google風格遵循的是從一般到特殊的原則。首先包含本檔案的標頭檔案,其次按照穩定度從高到底依次包含:c標準庫、c++標準庫、其它庫的標頭檔案,本工程其他標頭檔案。作業系統級別的標頭檔案,視其依賴的庫放置,比如linux作業系統提供的sdk,不能歸入c標準庫,因此包含順序應該是:本檔案的標頭檔案,os sdk .h , c標準庫、c++標準庫、其它庫的標頭檔案、本工程的其他標頭檔案。

之所以要將標頭檔案所在的工程目錄列出,作用應該是命名空間是一樣的,就是為了區分不小心造成的檔案重名。

#pragma once

class a

; ~a(){};

private:

std::vectorm_narray;

};#include "stdafx.h"//預編譯標頭檔案

#include #include "a.h"

這兩個檔案可以通過編譯,不過問題是,標頭檔案a.h隱藏依賴標頭檔案vector。調換一下二者順序,則無法通過編譯。還有就是,第三方想使用a.h的話,還要同時包含vector標頭檔案,並且順序不能錯。這就是隱藏依賴帶來的問題!

要解決這個問題,先要發現它。方法就是按照標準標頭檔案順序,則無法通過編譯,於是在a.h中新增#include

#pragma once

#include class a

; ~a(){};

private:

std::vectorm_narray;

};#include "stdafx.h"//預編譯標頭檔案

#include "a.h"

C 標頭檔案的包含順序

一 google c 程式設計風格指南 裡的觀點 dir2 foo2.h preferred location see details below c system files.c system files.other libraries h files.your project s h files...

C 標頭檔案包含

c 編譯是一件非常費時的事情,為了盡量的減少編譯時間,必須更好的包含標頭檔案。下面有幾條很重要的教條,可以參考。1 在標頭檔案中能用類前置宣告代替標頭檔案包含的就用前置宣告。因為使用類前置宣告,當引用的類發生改變時,當前檔案不需要重新編譯。a 必須要包含標頭檔案的情況 a繼承c,a類的標頭檔案中必須...

標頭檔案包含順序以及設計原則

關於c的標頭檔案包含,我認為體現了軟體的模組設計以及包含關係,對於標頭檔案包含,我個人看法如下 1.乙個基礎標頭檔案提供常用的資料型別 修飾符以及基礎操作巨集。例如叫basicdef.h 2.標頭檔案盡量只包含 basicdef.h,依賴模組的標頭檔案,也未必需要加到頭檔案中。3.global.h作...