動機
已經忘了當初是遇到什麼鍋,但是有留紀錄說要寫下來
macro(metaprogram) & program 的不同
macro是操作程式碼,所以程式碼不是所見及所得 * Macros have no namespace * Macros have effects you don’t realize & have strange side effects * Macros can’t be debugged * 沒有printf, gdb program是操作定義在program的資料,程式碼怎麼寫就怎麼動(不考慮side effect與system的鍋)
條件式編譯與ci
寫程式的可以自己定義條件式編譯,結果ci沒有跟上新加的編譯,導致ci沒有檢查到新的編譯,讓ci整個沒有用
解法
- 用enum, const
- 用function、與include、inline
- 把條件式編譯的參數拆成
- 不同branch
- 用設定檔讀參數
重點: macro中不能有business logic在