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

C語言頭文件編寫與模組化實戰教學

     編輯:C 語言問答

頭文件機制與模組化程式設計

頭文件(.h)是C語言實現模組化、資訊隱藏、程式碼復用的核心機制。

標準頭文件結構

// mymath.h
#ifndef MYMATH_H
#define MYMATH_H

// 函數聲明(介面)
double mean(double *data, int n);
int max(int a, int b);
void swap(int *a, int *b);

// 常數定義
#define PI 3.141592653589793

// 型別定義
typedef struct { double x, y; } Point;

#endif

實現檔

// mymath.c
#include "mymath.h"

double mean(double *data, int n) {
    double sum = 0;
    for (int i = 0; i < n; i++) sum += data[i];
    return sum / n;
}

int max(int a, int b) { return a > b ? a : b; }

void swap(int *a, int *b) { int t = *a; *a = *b; *b = t; }

主程式使用

// main.c
#include 
#include "mymath.h"

int main() {
    double arr[] = {1,2,3,4,5};
    printf("平均值: %.2f\n", mean(arr, 5));
    printf("最大值: %d\n", max(10, 20));
    return 0;
}

編譯連結

gcc main.c mymath.c -o program
// 或分步:
gcc -c mymath.c -o mymath.o
gcc -c main.c -o main.o
gcc main.o mymath.o -o program

頭文件最佳實踐

  1. 防重複包含:使用 #ifndef/#define/#endif 或 #pragma once
  2. 僅放聲明:函數原型、型別定義、巨集、外部變量聲明(extern)
  3. 不放定義:避免函數體、變量定義、靜態變量放入頭文件(會導致多重定義錯誤)
  4. 最小依賴:頭文件中僅包含必要的其他頭文件
  5. 命名規範:專案前綴防衝突,如 PROJECT_MODULE_H

常見錯誤

  • 在頭文件中定義變量 → 多檔包含導致重複定義
  • 頭文件缺少防重複包含宏 → 遞迴包含、編譯錯誤
  • 混用 < > 和 "":系統頭文件用尖括號,專案頭文件用雙引號
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved