您的位置: 旅游網 > 綜藝 >> 衛視

    中用于調試程序的宏

    發布時間:2021-10-28 05:38:43

    ASSERT()

    ASSERT()被測試它的參數,若參數為0,則中斷執行并打印一段說明消息。在 Release 版本的程序中它不起任何作用。ASSERT()使用的時候必須保證參數表達式中不能有函數調用(譯者注:ASSERT()宏在 Release 版本中不對表達式求值),因此對于任何有函數調用的參數表達式,應該使用宏 VERIFY(),以保證表達式中的函數調用在 Release 版本中會被正確求值。

    斷言(assertion)用帶斷言信息(程序, 模塊, assertion行)的對話框執行. 對話框有3個按鈕: \"Break\", \"Repeat\" (\"Debug\"), and \"Continue\" (\"Ignore\"). \"Break\" 結束程序, \"Continue\" 忽略斷言, 最有用的是\"Repeat\"按鈕. 按下它在斷言的地方打開源代碼器. 在這里你可以測試所有的變量值并明白哪里出了問題。

    例如:ASSERT(pPointer);ASSERT(n0 n100);ASSERT(0);

    ASSERT在執行簡單驗證時很有用,但對于C++對象,特別是由CObject派生的對象,則有更好的方法ASSERT_VALID來實現類似操作。作為一般規則,我們應在開始使用每一個對象之前檢查數據訛誤,

    ASSERT_VALID宏使得對CObject的派生類實現該操作非常簡單。

    例如:ASSERT_VALID(this);ASSERT_VALID(pView);

    VERIFY()

    VERIFY()和 ASSERT()很相似,區別在于在 Release 版本中它仍然有效(譯者注:原作者在這里沒有講清楚,VERIFY()不會打印說明,只是會對參數表達式求值)。

    TRACE()

    TRACE()基本上就是函數 printf()的一個復制品,唯一的區別是它把結果輸出到調試窗口。在 Release 版本中,它也是無效的。一般是用TRACE0(),TRACE1(),TRACE2()…而不用TRACE()。

    這三個宏在 Release 版本中都不會產生任何實質性的影響,它們是否起作用取決于是否定義了預定義了宏 _DEBUG。這是對 Microsoft Visual C++ 而言,在其它的編譯器中可能其它不同的宏。

    常用用法:

    為了控制傳進的指針:

    void SomeFun(SomeType* pPointer)

    {

    ASSERT(pPointer);

    //some instructions.

    }

    你可以在\"switch\" 和 \"if\"操作中捕獲奇怪的值

    例如:

    switch(nRGBColors){

    case nRed: {//some instructions.} break;

    case nGreen: {//some instructions.} break;

    case nBlue: {//some instructions.} break;

    default: ASSERT(0); // we should have never come here!

    }

    if(nWaterTemp =0 nWaterTemp 50){

    //some instructions.

    }

    else if(nWaterTemp = 50 nWaterTemp = 100){

    IBM發布了專為大數據處理打造的專家集成系統PureData //some instructions.

    }

    else{

    ASSERT(0); // we should have never come here!

    }

    對值的斷言:

    ASSERT(nSomeValue = MinValue and nSomeValue = MaxValue);

    ASSERT(nOtherValue != 0);

    可愛的 ASSERT 錯誤

    ASSERT( m_eate() );

    嘔! 這是一個可怕的錯誤! 程序在調試版中正常工作, 在發行版中不工作. 記住: 這是一個在發行版中將被移除的宏. 以這種方法你的窗口將永遠不會被創建. 如果你用 MFC, 這樣做:

    VERIFY( m_eate() );

    它在調試版中像ASSERT一樣并且在發行版中執行m_eate()。

    杭州子宮內膜炎治療多少錢
    腳扭傷吃什么藥
    銅仁白癜風醫院哪家醫院好
    猜你會喜歡的
    猜你會喜歡的
    主站蜘蛛池模板: www884aa| 乱色熟女综合一区二区三区 | 手机在线看片国产日韩生活片| 亚洲狠狠婷婷综合久久久久| 老子影院午夜伦手机在线看| 国产精品久久久久久久久齐齐| 一级毛片免费在线播放| 日韩精品视频免费在线观看| 亚洲欧美日韩在线精品2021| 精品国产a∨无码一区二区三区| 国产又黄又爽视频| 美女无遮挡拍拍拍免费视频| 天堂网最新版www| 中文字幕在线免费观看视频| 最近中文字幕2018中文字幕6| 亚洲爱情岛论坛| 精品1州区2区3区4区产品乱码| 国产亚洲成AV人片在线观看导航 | 在线观看福利网站| 天天干天天做天天操| 中文字幕不卡在线高清| 日韩人妻潮喷中文在线视频| 亚洲国产综合专区在线电影| 狂野欧美性猛xxxx乱大交| 又粗又长又黄又爽视频| 调教扩张尿孔折磨失禁| 国产欧美在线观看一区| 8x视频在线观看| 大陆熟妇丰满多毛XXXX| 一级毛片女人18水真多| 日本5级床片全免费| 久久精品国产亚洲一区二区| 欧美成人天天综合在线视色| 伊人久久精品一区二区三区| 美女被暴羞羞免费视频| 国产区精品一区二区不卡中文 | 肉伦迎合下种怀孕| 国产在线视频不卡| 18禁亚洲深夜福利人口| 在线看片你懂的| www.日韩三级www.日日爱|