• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
我是张洪铭我是熊博士
时光静好,与君同;细水长流,与君语
博客园    首页    新随笔    联系   管理    订阅  订阅

使用 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 著  侯 捷 译

posted @ 2018-04-23 11:35  我是张洪铭我是熊博士  阅读(381)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3