預處理是C語言編譯的第一階段,負責處理以 # 開頭的指令。掌握常用預處理指令,能靈活控制代碼編譯、定義常量、實現跨平台適配。
| 指令 | 用途 |
|---|---|
# | 空指令,無任何效果 |
#include | 包含頭文件或源文件 |
#define | 定義宏(常量或函數式宏) |
#undef | 取消已定義的宏 |
#if | 條件編譯:若條件為真則編譯後續代碼 |
#ifdef | 若宏已定義則編譯後續代碼 |
#ifndef | 若宏未定義則編譯後續代碼(常用於頭文件防重複包含) |
#elif | #if 條件為假且當前條件為真時編譯 |
#else | 配合 #if/#ifdef 使用,條件不滿足時編譯此分支 |
#endif | 結束條件編譯塊 |
#error | 強制停止編譯並輸出錯誤信息 |
#pragma | 編譯器特定指令(如 #pragma once 防重複包含) |
#line | 修改編譯器報告的行號與文件名 |
#define PI 3.1415926
#define MAX(a,b) ((a)>(b)?(a):(b)) // 函數式宏,注意括號
#ifdef _WIN32
#include <windows.h>
#elif defined(__linux__)
#include <unistd.h>
#else
#error "Unsupported platform"
#endif
// myheader.h
#ifndef MYHEADER_H
#define MYHEADER_H
// 聲明內容
#endif
或使用現代編譯器支持的 #pragma once。
#include <file> 搜索系統路徑,#include "file" 先搜索當前目錄。預處理指令是C語言靈活性的重要來源,合理使用可提高代碼可移植性、可讀性與維護性。建議熟記上表指令,實戰中多嘗試條件編譯與宏技巧。