大型項目中充滿 #ifdef/#if/#else 條件編譯,直接閱讀源文件時,被大量灰色代碼干擾,難以聚焦當前構建配置下的實際邏輯。
gcc -E source.c -o source.i
-E 選項僅運行預處理器,輸出展開所有宏、包含所有頭文件、解析所有條件編譯後的純 C 代碼。.i 為預處理輸出的慣用後綴。
#include 遞歸展開-C)#line 指令,可映射回原始行號
# 查看特定宏定義下的代碼
gcc -E -DDEBUG=1 -DVERSION=2 source.c -o source_debug.i
# 保留註釋便於對照
gcc -E -C source.c -o source_with_comments.i
# 直接輸出到標準輸出配合 less 查看
gcc -E source.c | less
indent/clang-format 格式化後閱讀grep/less 定位這個技巧是 C/C++ 開發者閱讀、調試、分析代碼的「核磁共振」,善用之可大幅提升理解複雜代碼庫的效率。