• 使用 MtVerify.h头文件 ,用的时候把他头文件的内容添加到项目


    #include <windows.h>  //windodws变量相关头文件

    MtVerify.h的内容如下:
    #pragma comment( lib, "USER32" )     
    #include <stdlib.h>     
    #include <crtdbg.h>     
    #define MTASSERT(a) _ASSERTE(a)     
    // 宏定义 __FILE__ 与__LINE__都是预处理符号提供错误信息的描述     
    // 如果a返回FALSE就执行PrintError函数     
    #define MTVERIFY(a) if (!(a)) PrintError(#a,__FILE__,__LINE__,GetLastError())     
    __inline void PrintError(LPSTR linedesc, LPSTR filename, int lineno, DWORD errnum)     
    {     
        LPSTR lpBuffer;     
        char errbuf[256];     
    #ifdef _WINDOWS     
        char modulename[MAX_PATH];     
    #else // _WINDOWS     
        DWORD numread;     
    #endif // _WINDOWS     
        // 把从GetLastError()返回的错误码转化为错误信息      
        FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER     
            | FORMAT_MESSAGE_FROM_SYSTEM,     
            NULL,     
            errnum,     
            LANG_NEUTRAL,     
            (LPTSTR)&lpBuffer,     
            0,     
            NULL );     
        wsprintfA(errbuf, "/nThe following call failed at line %d in %s:/n/n"    
            " %s/n/nReason: %s/n", lineno, filename, linedesc, lpBuffer);     
        // 如果是console程序就输出信息到控制台上  
    #ifndef _WINDOWS     
        WriteFile(GetStdHandle(STD_ERROR_HANDLE), errbuf, strlen(errbuf), &numread, FALSE );     
        // 等待3秒钟是为了使用者看到出错信息     
        Sleep(3000);     
        // 如果是窗口程序就一弹出对话框的形式输出错误信息  
    #else     
        // 当前exe文件的全路径     
        GetModuleFileName(NULL, modulename, MAX_PATH);     
        // 置弹出窗口在最上层以免被忽略     
        MessageBox(NULL, errbuf, modulename, MB_ICONWARNING|MB_OK|MB_TASKMODAL|MB_SETFOREGROUND);     
    #endif     
        // 把结束代码EXIT_FAILURE 交给操作系统  
        exit(EXIT_FAILURE);     

     

    内容参考于:《win32 多线程程序设计》线程完全手册Jim Beveridge & Robert Wiener 著  侯 捷 译

  • 相关阅读:
    2013Esri全球用户大会之ArcGIS for Desktop
    简单的session共享的封装
    支付系统开发中可能遇到的问题
    Java定位CPU使用高问题--转载
    ReflectionToStringBuilder
    solrcloud使用中遇到的问题及解决方式
    使用ELK(Elasticsearch + Logstash + Kibana) 搭建日志集中分析平台实践--转载
    php和java的memcached使用的兼容性问题解决过程
    multi-CPU, multi-core and hyper-thread--转
    Java Garbage Collection Basics--转载
  • 原文地址:https://www.cnblogs.com/azbane/p/8917039.html
Copyright © 2020-2023  润新知