C++代码编写举例分析
发表于:2024-12-04 作者:千家信息网编辑
千家信息网最后更新 2024年12月04日,本篇内容主要讲解"C++代码编写举例分析",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C++代码编写举例分析"吧!C++代码如下://log.h #i
千家信息网最后更新 2024年12月04日C++代码编写举例分析
本篇内容主要讲解"C++代码编写举例分析",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C++代码编写举例分析"吧!
C++代码如下:
//log.h #ifndef _LOG_H_ #define _LOG_H_ /* LOG Library(WIN98/NT/2000) ver 0.1 Compile by: BC++ 5; C++ BUILDER 4, 5, 6, X; VC++ 5, 6; VC.NET; GCC; Copyright(c) 2006.5 - 2007.4 llbird wushaojian@21cn.com http://blog.csdn.net/wujian53 Use: 这是一个很简单的日志, 用的是C风格的函数,支持多线程 只要包含本文件,并且把log.cpp文件添加到项目中就可以了 在VC中你可能需要在log.cpp中添加#include "stdafx.h" 具体使用 InitLog();//初始化 LOG("程序启动"); LOG1("%s", str); DestroyLog();//可有可无 调试时输出可以定义 LOG_TO_STD 或者 LOG_TO_DEBUG 对于C++ Builder 可以使用 LOG(Exception *e or Exception &e); 对于WIN32 API LOG_LAST_ERROR(); 对于_com_error LOG( _com_error &e); */ #include#include #include #include //使用短的原文件名 #define LOG_SHORT_SOURCE_FILE //使用日志 #define LOG_TO_FILE //定义标准错误输出设备 #define LOG_STD_DEV stderr //使用标准输出设备 //#define LOG_TO_STD //向调试窗口输出 //#define LOG_TO_DEBUG //输出messagebox //#define LOG_TO_MESSAGE_BOX //多线程用临界区 extern CRITICAL_SECTION _g_LogMutex; //全局日志文件名 extern char _g_LogFileName[MAX_PATH]; extern void InitLog(); //>初始化日志 extern void DestroyLog();//>清除日志 extern BOOL Log(const char* src/*源程序名*/, int line/*行号*/, const char* description/*描述*/);//>新增日志 //记录日志宏列表 #define LOG(arg) Log(__FILE__, __LINE__, (arg)) //多参数记录日志宏 #define LOG1(str, p1) { LOG_SPRINTF_BUFFER; sprintf(buffer, (str), (p1)); LOG(buffer); } #define LOG2(str, p1, p2) {LOG_SPRINTF_BUFFER; sprintf(buffer, (str), (p1), (p2)); LOG(buffer); } #define LOG3(str, p1, p2, p3) { LOG_SPRINTF_BUFFER; sprintf(buffer, (str), (p1), (p2), (p3)); LOG(buffer); } #define LOG4(str, p1, p2, p3, p4) { LOG_SPRINTF_BUFFER; sprintf(buffer, (str), (p1), (p2), (p3), (p4));LOG(buffer);} #define LOG5(str, p1, p2, p3, p4, p5) { LOG_SPRINTF_BUFFER; sprintf(buffer, (str), (p1), (p2), (p3), (p4), (p5)); LOG(buffer);} //记录windows API错误值 #define LOG_LAST_ERROR() { LOG_SPRINTF_BUFFER; DWORD eid = GetLastError();sprintf(buffer, "Last Error(%d):", eid); int len = strlen(buffer); \ FormatMessage( \ FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,\ NULL,\ eid, \ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), \ buffer + len,\ DEFAULT_LOG_SPRINTF_BUFFER_SIZE-len-1, \ NULL \ ); \ LOG(buffer); \ }\ #if defined(__cplusplus) && defined(_INC_COMDEF) ///新增COM错误信息 inline BOOL Log(const char* src, int line, _com_error &e) { char buffer[DEFAULT_LOG_SPRINTF_BUFFER_SIZE]; sprintf(buffer, "_com_error\tCode = %x\tCode meaning = %s\tSource = %s\tDescription = %s", e.Error(), (LPCSTR)(_bstr_t)e.ErrorMessage(), (LPCSTR)(_bstr_t)e.Source(), (LPCSTR)(_bstr_t)e.Description()); return LOG_POS(src, line, buffer); } #endif ///新增VCL异常信息 #if defined(__cplusplus) && defined(__BORLANDC__) && defined(INC_VCL) inline BOOL Log(const char* src, int line, Exception *e) { return LOG_POS(src, line, e->Message.c_str()); } inline BOOL Log(const char* src, int line, Exception &e) { return LOG_POS(src, line, e.Message.c_str()); } #endif #endif _LOG_H_
到此,相信大家对"C++代码编写举例分析"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
日志
C++
输出
代码
文件
分析
错误
信息
内容
文件名
标准
线程
设备
学习
实用
更深
可有可无
全局
兴趣
函数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
游戏加速服务器需要多少带宽
宝塔面板推流服务器
查找中文文献可使用的数据库
分享经济的软件开发
五行网络安全
服务器企业全球10强市值
ip网络技术改造
电脑专长硬件及网络技术
接口中的数据库怎么设置
云数据库太贵了
网络技术服务工作方案
网络安全法国企解读
三级教程 数据库技术 题型
软件开发学院男女比例
1万个账号需要多少数据库
租用服务器安全防护谁来做
软件开发怎么避免外包
舟山提供网络技术咨询热线
怎么将网络安全ppt
路由器远端服务器无
河北正规网络技术分类市场价
关于网络安全保密的法律
上海钢联属于互联网科技股吗
我与网络安全 微网文
软件开发合同英文版
对日软件开发 调查
无法和服务器建立安全的连接苹果
什么是关系数据库有什么优点
全国银行名录数据库
江苏凯博软件开发有限公司陈影