首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

Google C++ 風格指南:頭文件包含順序與隱藏依賴消除

     編輯:關於C++

推薦包含順序

為了增強可讀性、避免隱含依賴,Google 規定:

  1. 首選頭文件:對應的 .h 文件(如 foo/internal/fooserver.cc 先包含 foo/public/fooserver.h)——確保頭文件自給自足,無隱藏依賴。
  2. C 標準庫:<stdio.h>, <stdlib.h> 等
  3. C++ 標準庫:<vector>, <string>, <algorithm> 等
  4. 第三方庫:<boost/...>, <gtest/gtest.h> 等
  5. 本專案其他頭文件:"base/basictypes.h", "foo/public/bar.h" 等

隱藏依賴示例

// A.h
struct BS bs; // 依賴 B.h 中的 BS 定義

// B.h
struct BS { ... };

// A.cpp 錯誤順序
#include "A.h"
#include "B.h" // 編譯報錯:A.h 見不到 BS 定義

// 正確順序(或在 A.h 內包含 B.h)
#include "B.h"
#include "A.h"

將自身頭文件放第一位,能強制暴露隱藏依賴,倒逼頭文件自包含所需依賴。

路徑包含規範

外部引用專案頭文件時必須帶上專案目錄前綴:
#include "base/logging.h" ✅
#include "logging.h" ❌(易發生同名衝突)

底層邏輯:從一般到特殊

除首選頭文件外,順序遵循「通用 → 專用」原則。更精確的層級劃分應為:
OS SDK → C 標準庫 → C++ 標準庫 → 第三方庫 → 本專案庫
(如 sys/types.h 屬於 OS SDK 而非 C 標準庫)

總結

規範頭文件順序不僅是風格統一,更是為了編譯期防火牆:減少隱藏耦合,確保頭文件獨立可編譯,提升構建可靠性與並行編譯效率。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved