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

    中用于調試程序的宏

    發布時間: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()。

    杭州子宮內膜炎治療多少錢
    腳扭傷吃什么藥
    銅仁白癜風醫院哪家醫院好
    猜你會喜歡的
    猜你會喜歡的
    主站蜘蛛池模板: 国产成人免费高清激情视频| 忘忧草社区中文字幕| 亚洲精品无码mv在线观看网站| 鸡鸡插屁股视频| 天天av天天翘天天综合网| 国产AV成人一区二区三区| 91九色视频无限观看免费| 成年人在线免费看| 亚洲av无码一区二区乱孑伦as| 男女超级黄aaa大片免费| 国产亚洲福利一区二区免费看| 69av在线视频| 妈妈的朋友在8完整有限中字5| 久久国产综合精品欧美| 欧美日韩国产精品| 国产女人乱子对白AV片| 两个体校校草被c出水| 欧美a级毛欧美1级a大片免费播放| 免费无码又爽又刺激高潮| 青青青国产成人久久111网站| 国产精品高清视亚洲一区二区| 两个人看的视频www在线高清| 暖暖免费高清日本中文| 亚洲欧美自拍一区| 精品国产青草久久久久福利| 国产大片内射1区2区| 67194老司机精品午夜| 实况360监控拍小两口| 久久精品一区二区三区中文字幕 | 丁香婷婷亚洲六月综合色| 最强yin女系统白雪| 亚洲日韩乱码久久久久久| 韩国r级春天在线无删减| 国产精品综合网| eeuss影院机在线播放| 抽搐一进一出gif日本| 九色综合九色综合色鬼| 欧美激情a∨在线视频播放 | 99精品国产在热久久无码| 欧洲亚洲国产精华液| 亚洲综合区小说区激情区|