我正在使用這些代碼行來除錯我的 C 程式。
void dbg_out(){cerr << endl;}
template<typename Head, typename... Tail> void dbg_out(Head H, Tail... T) { cerr << ' ' << H; dbg_out(T...); }
#define dbg(...) cerr << "(" << #__VA_ARGS__ << "):", dbg_out(__VA_ARGS__)
但問題在于,當我使用 dbg 函式并提交給 codeforces 或 codechef 等在線法官時,它會增加代碼的執行。有沒有辦法讓在線編譯器忽略除錯陳述句?
uj5u.com熱心網友回復:
您可以使前處理器有條件地定義宏:
#ifdef DEBUG_LOG
#define dbg(...) std::cerr << "(" << #__VA_ARGS__ << "):", dbg_out(__VA_ARGS__)
#else
#define dbg(...)
#endif
現在,如果您使用該選項進行編譯-DDEBUG_LOG,日志將被發送到std::cerr. 在線法官不會添加該命令列選項,但您可以在本地添加.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/405049.html
標籤:
上一篇:無法打開檔案以從C中讀取登錄資料
