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

C語言預處理器:文件包含與條件編譯實戰

     編輯:關於C語言

文件包含 #include

#include "文件名"   // 先當前目錄,再包含目錄
#include <文件名>   // 僅包含目錄

關鍵規則

  • 一條指令包含一個文件,多文件需多指令
  • 支持嵌套包含
  • 常用於共享宏定義、類型聲明、函數原型

條件編譯實戰

形式一:#ifdef 實例

#define NUM ok
main() {
    struct stu { int num; char *name; char sex; float score; } *ps;
    ps = (struct stu*)malloc(sizeof(struct stu));
    ps->num = 102; ps->name = "Zhang ping"; ps->sex = 'M'; ps->score = 62.5;
    #ifdef NUM
    printf("Number=%d\nScore=%f\n", ps->num, ps->score);
    #else
    printf("Name=%s\nSex=%c\n", ps->name, ps->sex);
    #endif
    free(ps);
}

#define NUM 無值也視為已定義。註釋掉該行則編譯 #else 分支。

形式二:#ifndef — 頭文件保護標準模式

#ifndef MY_HEADER_H
#define MY_HEADER_H
// 頭文件內容
#endif

形式三:#if 常量表達式

配合宏定義實現編譯期配置切換,如調試/發布版本、平台差異處理。

實際項目應用建議

  • 頭文件必須有防重複包含保護(#pragma once 或 #ifndef)
  • 平台相關代碼用條件編譯隔離
  • 調試代碼用 #ifdef DEBUG 包裹,發布時不編入
  • 避免過度嵌套條件編譯,降低可讀性
  • 宏名稱使用項目前綴避免衝突(如 PROJECT_FEATURE_X)

預處理器是 C 語言編譯期元編程的核心工具,善用可實現極大的靈活性與可移植性。

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