回答
通常軌跡與此類似(此處過於簡單化)的方式進行:
#ifdef DISPLAY_TRACES
#define TRACE(x) printf(x)
#else
#define TRACE(x)
#endif
然後用或取決於你是否想痕跡不-DDISPLAY_TRACES
編譯。
使用預處理指令刪除跟蹤語句:
#ifdef TRACING_IS_ENABLED
/* Perform tracing operations. */
#endif
確保沒有出現意料之外的副作用從跟蹤語句。
如果要重新啓用跟蹤操作,請定義宏TRACING_IS_ENABLED
。
你可以把在預處理器宏跟蹤,並使用預處理器條件來選擇應使用的宏:
#ifdef TRACING_ENABLED
# define TRACE(x) printf("TRACE: %s:%d %s\n", __FILE__, __LINE__, x)
#else
# define TRACE(x)
#endif
void foo()
{
TRACE("In foo()");
}
如果TRACING_ENABLED
被定義,所述TRACE
宏由printf
取代聲明。如果TRACING_EMABLED
是而不是定義,則TRACE
被替換爲空行。
我會拿出';'在#define中,並將其放在調用之後。如果你有'if(cond)TRACE(「cond」)else TRACE(「not cond」)它會預編譯爲if(cond)else是不好的。另一個會導致if(cond);其他;這在語法上沒問題。 –
有沒有一種方法可以將此代碼保存在一個文件中,並將此文件包含在另一個文件中並使用它。就像在模塊中重複使用此代碼 – Rupesh
@PeterMiehle你是對的。更新了我的答案。 –
- 1. 擺脫一些輸出
- 2. 以下哪些陳述是正確的並且會編譯?
- 3. 我如何擺脫glu.h中的這些編譯器錯誤?
- 4. TinyMCE:如何擺脫一些按鈕
- 5. 需要擺脫一些警告
- 6. 小組正在擺脫一些行?
- 7. BeautifulSoup - 表 - 擺脫那些\ n
- 8. 什麼是擺脫集合
- 9. 如何隱藏一個陳述並揭示另一個陳述?
- 10. 案件陳述裏面如果陳述
- 11. 如果陳述「不是陳述」?
- 12. 如果陳述在案例陳述(VB.Net)
- 13. 擺脫lxml中的編碼
- 14. 如何將多個陳述合併爲一個陳述?
- 15. 如何將這兩個陳述合併成一個陳述?
- 16. Bash如何解釋這些陳述?
- 17. 這些陳述有什麼區別嗎?
- 18. 這些陳述如何工作?
- 19. 我將如何分離這些陳述?
- 20. 我可以合併這些陳述嗎?
- 21. 擺脫
- 22. SQL陳述
- 23. 更新陳述
- 24. 在做陳述
- 25. EXCEL:AND陳述
- 26. 錫罐陳述
- 27. 條件陳述
- 28. 陳述在C++
- 29. 如何在編譯靜態時擺脫OCI.dll依賴關係
- 30. 如何擺脫`繼續`困惑的編譯器警告?
謝謝你一堆。有沒有辦法將這個概念應用於.Net世界 – Rupesh