前處理器
出自 cppreference.com
< c
預處理器在轉譯階段 4執行,於編譯之前。預處理的結果是一個單一的檔案,接著會被傳遞給實際的編譯器。
目錄 |
[編輯] 指令
預處理指令控制預處理器的行為。每個指令佔用一行,並具有以下格式:
-
#字元 - 預處理指示(
define,undef,include,if,ifdef,ifndef,else,elif,elifdef,elifndef(C23 起),endif,line,embed(C23 起),error,warning(C23 起),pragma之一)[1] - 參數(取決於該指令)
- 換行符號。
允許使用空指令(# 後接換行符號),它不會產生任何效果。
[編輯] 功能
預處理器具有以下原始碼檔案轉譯功能:
- 條件式編譯原始碼檔案的部分內容(由指令
#if,#ifdef,#ifndef,#else,#elif,#elifdef,#elifndef(C23 起) 以及#endif控制)。 - 替換文字巨集,同時可能進行識別字串接或引號處理(由指令
#define和#undef,以及運算子#和##控制)。 - 包含其他檔案(由指令
#include,並可透過__has_include檢查(C23 起) 控制)。 - 觸發錯誤或警告(C23 起)(分別由指令
#error或#warning(C23 起) 控制)。
以下預處理器面向可被控制:
[編輯] 註腳
- ↑ 這些是標準定義的指令。標準並未定義其他指令的行為:它們可能會被忽略、具有某些實用意義,或導致程式格式錯誤。即使被忽略,當預處理完成時,它們仍會從原始程式碼中移除。一種常見的非標準延伸指令是 #warning,它會在編譯期間發出使用者定義的訊息。(C23 前)
[編輯] 範例
| 本節尚不完整 理由:無範例 |
[編輯] 參考資料
- C23 標準 (ISO/IEC 9899:2024)
- 6.10 預處理指令 (p: 待定)
- C17 標準 (ISO/IEC 9899:2018)
- 6.10 預處理指令 (p: 117-129)
- C11 標準 (ISO/IEC 9899:2011)
- 6.10 預處理指令 (p: 160-178)
- C99 標準 (ISO/IEC 9899:1999)
- 6.10 預處理指令 (p: 145-162)
- C89/C90 標準 (ISO/IEC 9899:1990)
- 3.8 預處理指令
[編輯] 參見
| C 文件:預定義巨集符號
| |
| C 文件:巨集符號索引
| |
| C++ 文件:預處理器
|