首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C/C++ 專案為何包含 .h 而非 .c?編譯鏈接機制深度解析

     編輯:程式設計綜合問答

核心原因:分離宣告與實作

  • .h (Header):函數宣告、類別定義、巨集常數 —— 供其他檔案 #include 使用
  • .c/.cpp (Source):函數實作、變數定義 —— 加入專案參與編譯

編譯流程對比

方式編譯單元修改影響範圍編譯速度
包含 .h各 .c 獨立編譯為 .obj僅修改檔重新編譯快(支援增量編譯)
包含 .c所有代碼合併為單一編譯單元任何修改觸發全量重編譯極慢

鏈接階段

編譯器產生目標檔(.o/.obj),連結器解析外部符號引用,生成可執行檔。頭文件讓編譯器知道函數簽名,源文件提供實際代碼。

最佳實踐

// math.h
#ifndef MATH_H
#define MATH_H
int add(int a, int b); // 宣告
#endif

// math.c
#include "math.h"
int add(int a, int b) { return a+b; } // 實作

// main.c
#include "math.h"
int main() { return add(1,2); }

守衛巨集防止重複包含,專案配置加入 math.c 而非 #include "math.c"。

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