亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ehm.h

?? 6410BSP3
?? H
字號(hào):
/***********************************************************
    ehm.h
    Error handling macros

Author(s): KKennedy (derived from many sources)

    {x,}{CVD}{H,P,B,W}R{A,}{Ex,}
    C=check, V=verify, D=dump
    H=hresult, P=ptr, B=bool, W=windows
    R=result
    A=assert
    Ex=extended version
    x=wart, suppresses assert due to practical pblm (obsolete!)

    C checks, and bails on failure after setting hr
        A adds an ASSERT before the bail
    V checks, and ASSERTs on failure
    D checks, and SPEWs on failure
    (yes, the 'A' is inconsistent)
    Ex adds overriding failure-case 'E_*' of user's choice
    x is obsolete, you shouldn't use it

    n.b. we only have some of the above implemented (the ones we've needed
    so far...)

    if you're an unlucky soul and run into a label collision, use the
    _ehmErrorLab mechanism (see below).

    see also the document: <todo: ptr to in kk's ehm .doc>

NOTES
    we use the "if (0,fResult), while (0,0)" style in order to suppress W4 warnings.  the PF_EXPR wraps that to keep prefix happy.

*/
#ifndef _EHM_H_
#define _EHM_H_

// 99% of the time ehm.h "just works".  however 1% of the time the "Error"
// label is already in use (e.g. for some other macro package).  if you hit
// that, do this:
//      #define _ehmErrorLab    EhmError
//      #include <ehm.h>
// ... and then use EhmError as your label.  it may seem a bit silly to add
// this extra indirection vs. just use EhmError always, but given that it's
// a 99%/1%, it seems worthwhile.
//
// our suggestion is that custom clients standardize on "EhmError", but if
// need be, they can choose whatever they want.
#ifndef _ehmErrorLab
#define _ehmErrorLab   Error
#endif

typedef enum
    {
    eHRESULT,
    eBOOL,
    ePOINTER,
    eWINDOWS
    } eCodeType;

#ifdef DEBUG
BOOL OnAssertionFail(eCodeType eType, DWORD dwCode, const TCHAR* pszFile, unsigned long ulLine, const TCHAR* pszMessage);
#endif

// Check HRESULT
#define _CHREx0(hResult)\
    do {hr = (hResult); if(FAILED(hr)) goto _ehmErrorLab;} while (0,0)
#define _CHR(hResult, hrFail)\
    do {hr = (hResult); if(FAILED(hr)) { hr = (hrFail); goto _ehmErrorLab;} } while (0,0)

// Check pointer result
#define _CPR(p, hrFail)\
    do {if (PF_EXPR(!(p))) {hr = (hrFail); goto _ehmErrorLab;} } while (0,0)

// Check boolean result
#define _CBR(fResult, hrFail)\
    do {if (PF_EXPR(!(fResult))) {hr = (hrFail); goto _ehmErrorLab;}} while(0,0)

// Check windows result.  Exactly like CBR for the non-Asserting case
#define _CWR _CBR

// The above macros with Asserts when the condition fails
#ifdef DEBUG

#define _CHRAEx0(hResult)\
    do\
        {\
        hr = (hResult);\
        if(FAILED(hr))\
            {\
            if(OnAssertionFail(eHRESULT, hr, TEXT(__FILE__), __LINE__, TEXT("CHRA(") TEXT( # hResult ) TEXT(")")))\
                {\
                DebugBreak();\
                }\
            goto _ehmErrorLab;\
            }\
        }\
    while (0,0)

#define _CHRA(hResult, hrFail)\
    do\
        {\
        hr = (hResult);\
        if(FAILED(hr))\
            {\
            hr = (hrFail);\
            if(OnAssertionFail(eHRESULT, hr, TEXT(__FILE__), __LINE__, TEXT("CHRA(") TEXT( # hResult ) TEXT(")")))\
                {\
                DebugBreak();\
                }\
            goto _ehmErrorLab;\
            }\
        }\
    while (0,0)

#define _CPRA(p, hrFail)\
    do\
        {\
        if (PF_EXPR(!(p)))\
            {\
            hr = (hrFail);\
            if(OnAssertionFail(ePOINTER, 0, TEXT(__FILE__), __LINE__, TEXT("CPRA(") TEXT( # p ) TEXT(")")))\
                {\
                DebugBreak();\
                }\
            goto _ehmErrorLab;\
            }\
        }\
    while (0,0)

#define _CBRA(fResult, hrFail)\
    do\
        {\
        if (PF_EXPR(!(fResult)))\
            {\
            hr = (hrFail);\
            if(OnAssertionFail(eBOOL, 0, TEXT(__FILE__), __LINE__, TEXT("CBRA(") TEXT( # fResult ) TEXT(")")))\
                {\
                DebugBreak();\
                }\
            goto _ehmErrorLab;\
            }\
        }\
    while (0,0)

#define _CWRA(fResult, hrFail)\
    do\
        {\
        if (PF_EXPR(!(fResult)))\
            {\
            hr = (hrFail);\
            if(OnAssertionFail(eWINDOWS, 0, TEXT(__FILE__), __LINE__, TEXT("CWRA(") TEXT( # fResult ) TEXT(")")))\
                {\
                DebugBreak();\
                }\
            goto _ehmErrorLab;\
            }\
        }\
    while (0,0)


#define VBR(fResult)\
    do\
        {\
        if (PF_EXPR(!(fResult)))\
            {\
            if(OnAssertionFail(eBOOL, 0, TEXT(__FILE__), __LINE__, TEXT("VBR(") TEXT( # fResult ) TEXT(")")))\
                {\
                DebugBreak();\
                }\
            }\
        }\
    while (0,0)

#define VPR(fResult)\
    do\
        {\
        if (PF_EXPR(!(fResult)))\
            {\
            if(OnAssertionFail(eBOOL, 0, TEXT(__FILE__), __LINE__, TEXT("VPR(") TEXT( # fResult ) TEXT(")")))\
                {\
                DebugBreak();\
                }\
            }\
        }\
    while (0,0)


// Verify Windows Result
#define VWR(fResult)\
    do\
        {\
        if (!(PF_EXPR(NULL != (fResult))))\
            {\
            if(OnAssertionFail(eWINDOWS, 0, TEXT(__FILE__), __LINE__, TEXT("VWR(") TEXT( # fResult ) TEXT(")")))\
                {\
                DebugBreak();\
                }\
            }\
        }\
    while (0,0)


// Verify HRESULT (careful not to modify hr)
#define VHR(hResult)\
    do\
        {\
        HRESULT _EHM_hrTmp = (hResult);\
        if(FAILED(_EHM_hrTmp))\
            {\
            if(OnAssertionFail(eHRESULT, _EHM_hrTmp, TEXT(__FILE__), __LINE__, TEXT("VHR(") TEXT( # hResult ) TEXT(")")))\
                {\
                DebugBreak();\
                }\
            }\
        }\
    while (0,0)

// make sure you keep the xTmp, can only eval arg 1x
// todo: dump GetLastError in DWR
#define DWR(fResult) \
    do { if (PF_EXPR(!(fResult))) {DEBUGMSG(1, (TEXT("DWR(") TEXT( # fResult ) TEXT(")\r\n") ));}} while (0,0)
#define DHR(hResult) \
    do { HRESULT hrTmp = hResult; if(FAILED(hrTmp)) {DEBUGMSG(1, (TEXT("DHR(") TEXT( # hResult ) TEXT(")=0x%x\r\n"), hrTmp));}} while (0,0)
#define DPR     DWR     // tmp
#define DBR     DWR     // tmp

#define CHRA(e) _CHRAEx0(e)
#define CPRA(e) _CPRA(e, E_OUTOFMEMORY)
#define CBRA(e) _CBRA(e, E_FAIL)
#define CWRA(e) _CWRA(e, E_FAIL)
#define CHRAEx(e, hrFail) _CHRA(e, hrFail)
#define CPRAEx(e, hrFail) _CPRA(e, hrFail)
#define CBRAEx(e, hrFail) _CBRA(e, hrFail)
#define CWRAEx(e, hrFail) _CWRA(e, hrFail)
#else
#define CHRA CHR
#define CPRA CPR
#define CBRA CBR
#define CWRA CWR
#define CHRAEx CHREx
#define CPRAEx CPREx
#define CBRAEx CBREx
#define CWRAEx CWREx
#define VHR(x) (x)
#define VPR(x) (x)
#define VBR(x) (x)
#define VWR(x) (x)
#define DHR(x) (x)
#define DPR(x) (x)
#define DBR(x) (x)
#define DWR(x) (x)
#endif

#define CHR(e) _CHREx0(e)
#define CPR(e) _CPR(e, E_OUTOFMEMORY)
#define CBR(e) _CBR(e, E_FAIL)
#define CWR(e) _CWR(e, E_FAIL)
#define CHREx(e, hrFail) _CHR(e, hrFail)
#define CPREx(e, hrFail) _CPR(e, hrFail)
#define CBREx(e, hrFail) _CBR(e, hrFail)
#define CWREx(e, hrFail) _CWR(e, hrFail)

// obsolete (but still in use)
// - work around various pseudo-pblms:
//  partial images, CEPC no-radio, etc.
// - also things that we want to know about in dev, but not in QA/stress:
//  an e.g. is our DoVerb stuff, there are 'good' failures (END when no call,
// or TALK w/ 0 entries) and 'bad' failures (e.g. TAPI returns an error), we
// don't want to int3 during stress but we do want to on our dev machines
//
// eventually we'll make these do "if (g_Assert) int3;", then we
// can run w/ g_Assert on for dev and off for stress.
#define xCHRA   CHR     // should be CHRA but...
#define xCPRA   CPR     // should be CPRA but...
#define xCBRA   CBR     // should be CBRA but...
#define xCWRA   CWR     // should be CWRA but...
#define xVHR    DHR     // should be VHR  but...
#define xVPR    DPR     // should be VPR  but...
#define xVBR    DBR     // should be VBR  but...
#define xVWR    DWR     // should be VWR  but...

#endif // _EHM_H_

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线无精精品入口| 日韩成人免费电影| 91超碰这里只有精品国产| 亚洲三级电影网站| 在线观看免费成人| 午夜免费久久看| 日韩欧美不卡在线观看视频| 玖玖九九国产精品| 国产偷国产偷亚洲高清人白洁| 国产传媒一区在线| 亚洲免费电影在线| 欧美精品在线观看播放| 久久精工是国产品牌吗| 国产欧美视频一区二区| 色哟哟国产精品| 日日夜夜精品视频天天综合网| 日韩免费观看高清完整版 | 蜜桃一区二区三区四区| 精品少妇一区二区| 盗摄精品av一区二区三区| 亚洲精品第1页| 日韩欧美在线综合网| 国产成人精品一区二| 亚洲黄色性网站| 欧美成人午夜电影| 99久久国产免费看| 日本视频免费一区| 国产精品欧美久久久久无广告| 欧美中文字幕一区二区三区| 麻豆精品精品国产自在97香蕉| 国产精品美女久久久久aⅴ| 欧美影视一区在线| 国产美女主播视频一区| 一区二区三区加勒比av| 久久综合狠狠综合久久激情| 91蜜桃网址入口| 精品伊人久久久久7777人| 亚洲欧美日韩国产手机在线| 日韩三级高清在线| 日本伦理一区二区| 国产精品一区二区91| 亚洲国产欧美在线人成| 国产精品视频一二| 日韩欧美中文字幕公布| 色国产综合视频| 国产福利一区二区三区视频| 视频在线观看91| 亚洲桃色在线一区| 国产日韩欧美精品综合| 6080日韩午夜伦伦午夜伦| 91麻豆国产在线观看| 国产精品一区二区91| 日本va欧美va欧美va精品| 亚洲欧美区自拍先锋| 国产欧美一区二区三区沐欲| 欧美一区二区网站| 欧美亚洲愉拍一区二区| 成人丝袜18视频在线观看| 久久精品久久精品| 午夜精品久久久久久不卡8050| 亚洲素人一区二区| 国产精品久久久久久久久快鸭| 26uuu国产在线精品一区二区| 欧美日韩国产综合一区二区| 色呦呦国产精品| 波多野结衣91| 成人午夜av电影| 国产大陆a不卡| 国产精品综合二区| 极品少妇xxxx精品少妇偷拍| 奇米影视在线99精品| 天堂成人免费av电影一区| 午夜久久久久久久久久一区二区| 一区二区三区在线观看网站| ㊣最新国产の精品bt伙计久久| 国产欧美精品一区| 欧美极品少妇xxxxⅹ高跟鞋| 久久综合色天天久久综合图片| 日韩欧美综合在线| 欧美成人一区二区三区| 日韩精品在线一区二区| 精品国产凹凸成av人网站| 欧美va亚洲va在线观看蝴蝶网| 欧美一卡2卡三卡4卡5免费| 日韩精品一区二区在线观看| 日韩美女主播在线视频一区二区三区| 欧美一区二区三区在线电影| 日韩免费观看2025年上映的电影 | 欧美色图一区二区三区| 欧美性猛片aaaaaaa做受| 色婷婷精品久久二区二区蜜臀av| 99久久精品国产一区| 色欧美乱欧美15图片| 91黄色免费观看| 欧美日韩久久久久久| 91精品国产综合久久蜜臀| 精品日韩99亚洲| 国产欧美一区二区精品性色超碰| 国产精品高潮呻吟| 亚洲精品第一国产综合野| 午夜av区久久| 韩国v欧美v日本v亚洲v| 粉嫩av一区二区三区在线播放| 99国产精品一区| 91小视频在线免费看| 欧美综合天天夜夜久久| 欧美一区二区三区四区在线观看| www激情久久| 亚洲免费毛片网站| 日本视频中文字幕一区二区三区| 精品一区二区在线视频| 99久久国产综合精品女不卡| 欧美视频一区二区三区四区| 日韩午夜激情免费电影| 国产精品视频线看| 亚洲国产成人tv| 国产在线看一区| 91视频免费观看| 日韩亚洲欧美高清| 国产欧美日韩三区| 亚洲色图在线看| 欧美aⅴ一区二区三区视频| 成人午夜视频在线| 欧美三电影在线| 欧美极品xxx| 人人超碰91尤物精品国产| 成人精品小蝌蚪| 欧美一级国产精品| 亚洲欧美日韩一区二区三区在线观看| 欧美aaaaa成人免费观看视频| 成人福利电影精品一区二区在线观看| 欧美三级日韩三级| 国产精品美女视频| 亚洲va天堂va国产va久| 成人精品gif动图一区| 欧美一区二区三区视频免费播放| 中文字幕中文字幕中文字幕亚洲无线| 日本欧美韩国一区三区| 91在线观看视频| 久久久久久久久久久电影| 日韩精品视频网| 91国产丝袜在线播放| 国产欧美久久久精品影院| 天堂一区二区在线免费观看| 91美女精品福利| 国产欧美日韩另类一区| 久久成人久久鬼色| 7777精品伊人久久久大香线蕉完整版| 自拍偷拍国产亚洲| 国产不卡在线一区| 欧美xxxxx裸体时装秀| 午夜免费欧美电影| 欧美影视一区二区三区| 自拍偷拍亚洲综合| www.亚洲激情.com| 国产欧美日韩一区二区三区在线观看| 久久福利资源站| 51午夜精品国产| 香蕉乱码成人久久天堂爱免费| 色素色在线综合| 亚洲免费观看在线观看| 91免费版pro下载短视频| 国产精品免费网站在线观看| 国产成人午夜片在线观看高清观看 | 国产精品美女一区二区在线观看| 久久精品噜噜噜成人av农村| 5566中文字幕一区二区电影| 偷拍日韩校园综合在线| 欧美亚洲愉拍一区二区| 亚洲综合区在线| 91黄视频在线| 亚洲福中文字幕伊人影院| 欧美影视一区二区三区| 亚洲成av人片在线观看| 欧美日韩一区 二区 三区 久久精品| 一区二区欧美视频| 欧美午夜精品一区二区三区| 依依成人综合视频| 欧美猛男gaygay网站| 日本欧美在线观看| 日韩欧美国产综合| 国产乱码精品一区二区三区忘忧草| 久久婷婷色综合| 成人短视频下载| 亚洲蜜臀av乱码久久精品| 欧美性大战久久久久久久| 午夜精品福利一区二区三区蜜桃| 欧美精品丝袜久久久中文字幕| 六月丁香综合在线视频| 久久久国际精品| 99久久精品国产毛片| 亚洲午夜免费电影| 日韩一区二区三区免费看 | 亚洲天堂久久久久久久| 欧日韩精品视频| 奇米影视一区二区三区| 国产欧美一区二区在线观看| 91女神在线视频| 麻豆成人免费电影| 国产精品久久久爽爽爽麻豆色哟哟 |