zoukankan      html  css  js  c++  java
  • 使用 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 著  侯 捷 译

  • 相关阅读:
    我从0开始开发了一个LDAP服务。
    C#开发中常用的小功能
    webapi swagger 报错 路由集合中已存在名为“swagger_docsswagger/docs/{apiVersion}”的路由。路由名称必须唯一
    h5 web vlc 播放rtsp流
    Docker的基础概念与在window10下的安装
    .Net Core JWT 动态设置接口与权限
    .Net Core官方的 JWT 授权验证
    IdentityServer4中文文档
    中介者模式及在NetCore中的使用MediatR来实现
    .Net Core 使用 FluentValidation
  • 原文地址:https://www.cnblogs.com/azbane/p/8917039.html
Copyright © 2011-2022 走看看