用 Coan 清理沒有打開的 #ifdef
2025-04-13
最近到新公司報到,開始讀沒有看過的 code。結果這個 code 包了一大堆 #ifdef,感覺很難閱讀
找了一下,看到這篇文章介紹 sunifdef 這個工具,可以把沒有開的 define 的部分都去掉,看起來好像不錯
後來又看到一個比較新的工具,叫做 coan,就來研究一下他的用法
首先要準備你想要開啟或關閉的 define 有哪些,可以打在 cmd line 上,也可以寫在檔案裡,讓 coan 去載入
-DARCH=X86
-UDEBUG
-DLINUX
-UWINDOWS
-DMAJOR_VER=4
-DMINOR_VER=3
-DPATCH_VER=2
上面的設定就是下面這個意思
#define ARCH X86
#undef DEBUG
#define LINUX
#undef WINDOWS
#define MAJOR_VER 4
#define MINOR_VER 3
#define PATCH_VER 2
準備好 argfile 之後就可以這樣下指令了:
coan source -f argfile --replace *.c .*h
這樣就會把同目錄中的 .c .h 處理過,把沒有開的 define 的部分都去掉
也可以用 recurse 處理資料夾(src)裡面所有的檔案:
coan source -f argfile --filter c,h --recurse src
還有很多其他的功能,像是把 symbols, includes, defs, pragmas, errors 分別列出來,也可以全部列出來:
coan directives --active --locate --filter c,h --recurse src > output
整理完再來看 code 就覺得清楚多了,也不用每次都要找 define 有沒有開,真是個好用的工具