簡體   English   中英

如何查看DEBUG條件語句的輸出?

[英]How to view the output of DEBUG conditional statement?

我已經使用#ifdef DEBUG條件語句編寫了一個代碼,以在代碼塊中打印cout語句。 我的問題是:

  1. 所以這些條件調試只會在條件正確時出現?
  2. 如果是這樣,當我調試代碼時如何查看代碼塊中的輸出?

我不確定代碼塊,但是在Visual Studio中,您可以選擇是否要構建程序的調試或發行版本(或定義的任何其他版本)。 這實際上是將標志DEBUG設置為true。 而且您不需要手動定義變量。 無論如何,您都可以使用自己的定義。

在調試版本中,#ifdef DEBUG內部的所有內容都將被編譯,而在發行版本中,這些代碼塊將被跳過。 要從調試中獲取信息,您可以像這樣定義宏調試打印。

#define DEBUG_MODE 1 // Or 0 if you dont want to debug

#ifdef DEBUG_MODE
#define Debug( x ) std::cout << x
#else
#define Debug( x ) 
#endif

然后調用您的Debug(someVariable); 如果生成調試版本,則將在控制台中輸出,否則將不會發生任何事情。

如其他注釋/答案中所述,您可以定義一個宏,例如DEBUG(message) ,僅用於在調試版本中打印調試消息。 但是,我建議您使用NDEBUG而不是DEBUG來這樣做。 NDEBUG是一個標准化的預定義宏,如果您打算這樣做的話,編譯器會在發行版本中自動定義它。 使用這種方式:

// #define NDEBUG  ==> not needed, this macro will be predefined by compiler in release build

#ifdef NDEBUG         // release build
# define DEBUG(msg)
#else                 // debug build
# define DEBUG(msg)   std::cout << msg
#endif

int main(void)
{
    DEBUG("this will be printed to console in debug build only\n");
    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM