当前位置: 首页 > news >正文

郑州网站建设君捷做兼职在什么网站找比较好

郑州网站建设君捷,做兼职在什么网站找比较好,宝塔wordpress公网访问,上海商城通过上一篇 《写一个简单的 C 日志库 - cllogger#xff08;2#xff09;- 日期时间》我们已经掌握了如何通过 std::chrono 提供的日期时间工具转换时间参数为指定格式的字符串。 现在我们可以把各个参数信息拼装为 Entry 实例#xff0c;交给 OutputMessage() void cllog… 通过上一篇 《写一个简单的 C 日志库 - cllogger2- 日期时间》我们已经掌握了如何通过 std::chrono 提供的日期时间工具转换时间参数为指定格式的字符串。 现在我们可以把各个参数信息拼装为 Entry 实例交给 OutputMessage()  void cllogger::LogInternal(Level level, std::chrono::system_clock::time_point timestamp, const WCHAR* source, const WCHAR* msg) {auto milliseconds std::chrono::duration_caststd::chrono::milliseconds(timestamp.time_since_epoch());auto seconds std::chrono::duration_caststd::chrono::seconds(milliseconds).count();auto time localtime(seconds);WCHAR timestampSz[128];size_t len _snwprintf_s(timestampSz,_TRUNCATE,L%02i:%02i:%02i.%03llu,time-tm_hour,time-tm_min,time-tm_sec,milliseconds.count() % 1000);Entry entry { level, std::wstring(timestampSz, len), source, msg };OutputMessage(entry); } OutputMessage() 将完成最终的日志字符串拼接并输出 void cllogger::OutputMessage(Entry entry) { #ifndef _DEBUGif (!m_LogToFile) return; #endifconst WCHAR* levelSz (entry.level Level::Error) ? LERROR :(entry.level Level::Warning) ? LWARNINIG :(entry.level Level::Fatal) ? LFatal :LDEBUG;// 拼装日志信息字符串std::wstring message levelSz;message L (;message.append(entry.timestamp);message L) ;message entry.tag;message L: ;message entry.messsage;message L\n;// 输出日志信息字符串 } 日志消息的输出可根据配置分别输出到调试窗口或dbgview、文件等。 先来实现输出到调试窗口这里特指 windows 平台上 Visual studio 开发环境中以 Debub 模式启动程序时底部显示的【输出】窗口。 在【输出】窗口中右键可以看到异常、单步筛选、模块加载、卸载、进程退出、线程退出、程序输出等信息都会输出到这里。 【程序输出】是指我们通过代码输出的信息这里我们就要讲讲输出信息到【输出】窗口的两种方法 1、OutputDebugString API  OutputDebugString(Loutput message.); 如果我们希望只在debug版的时候才输出则需要 #ifdef _DEBUG::OutputDebugString(LDEBUG); #endif // _DEBUG 2、 _RPTn 宏系列 _RPTn 中的n后缀指定args中的即格式化数据的参数个数它可以是 0、1、2、3、4 或 5。_RPTWn 是对应的宽字符版本。 如没有args时 _RPTW0(_CRT_WARN, message.c_str()); 有1个参数时 int foo 3; _RPTW1(_CRT_WARN, Lfoo is %d, foo); 后续以此类推。 考虑编译器及配置的不同下面的调用方式更为周密安全 #ifdef _UNICODE #ifdef _RPTW0_RPTW0(_CRT_WARN, foo); #endif #else_RPT0(_CRT_WARN, foo); #endif 这二者的主要区别是 OutputDebugString 是系统API任何时候都会执行消息输出但 _RPTn 则是 CRT 的一部分它仅仅在调试模式下输出到  Visual studio 的【输出】窗口中而 Relase 版则会被替换为空对性能基本没有影响。 CRTC Runtime Library 什么是CRT Microsoft C 运行时库 (CRT) 。为了提高C语言的开发效率C标准定义了一系列常用的函数称为C库函数。C标准仅仅定义了函数原型并没有提供实现。因此这个任务留给了各个支持C语言标准的编译器。每个编译器通常实现了标准C的超集称为C运行时库C Run Time Library简称CRT。对于VC编译器来说它提供的CRT库支持C标准定义的标准C函数同时也有一些专门针对Windows系统特别设计的函数     CRT 和 API 及操作系统之间的关系 CRT包含哪些内容 内容说明启动、退出入口函数、及所依赖的函数标准函数C语言标准、标准库所拥有的函数实现I/OI/O的封装堆堆的封装和实现语言实现特殊功能的实现调试实现调试功能的代码 由此看来CRT是 Windows 上编程的基石提供了方方面面的底层支持。 使用 CRT 相关的功能很简单只需要引入 crtdbg.h 即可。 我们接下来再列举一个 CRT 应用的例子。 CRT 调试技术 要使用 CRT 调试库之一必须链接 /DEBUG并使用 /MDd、/MTd 或 /LDd 进行编译。即必须处于调试模式下。 C 程序员经常会遇到的困难之一便是内存泄露。内存泄露的原因是使用new或malloc等函数分配内存但没有正确的配对使用delete和free释放内存就会造成程序所占用的内存越来越大的现象。 检查内存泄漏的原理是在分配的数据一头一尾分别插入对应的标志数据微软使用的是0xfd 0xfd 0xfd 0xfd检查是否溢出直接检查这两个标志数据是否被修改即可判断。 例如我们分配10个字节的内存 char* a new char[10]; a 的地址为 0x01039099查看内存  可以看到数据两端都填充了0xfd,初始化分配的数据填充为0xcd。  主动调用 _CrtDumpMemoryLeaks 检查泄露 #include crtdbg.hint main() {char* a new char[10];_CrtDumpMemoryLeaks(); } 输出 捕获到了内存泄漏且指明了内存地址和大小。 如果想输出泄露内存代码所在的文件名和行号那就完美了我们可以通过宏来做到 #define DEBUG_NEW new(_CLIENT_BLOCK, __FILE__, __LINE__) #define new DEBUG_NEW 效果  已经非常清晰明了了。我们再进一步能否让内存泄露信息以弹出窗口的方式显示完全可以只需要通过 _CrtSetReportMode 设置报告现实的方式即可 #include crtdbg.hint main() {_CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_WNDW | _CRTDBG_MODE_DEBUG);_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_WNDW | _CRTDBG_MODE_DEBUG);char* a new char[10];_CrtDumpMemoryLeaks(); } 效果 是不是很简单就做到了内存泄露的检查其实通过CRT我们还可以做到程序退出时自动检查甚至为了降低检查对程序性能的影响我们还可以设置检查内存泄露的频率。 总结 CRT 作为 Windows 编程中不可或缺的一部分提供了基本的函数和宏善用 CRT 会简化开发提供可靠性提供层序性能确保了程序的高效健壮需要我们好好的把握。 参考 C runtime library reference | Microsoft Learn_RPT, _RPTF, _RPTW, _RPTFW Macros | Microsoft Learn
http://www.pierceye.com/news/477650/

相关文章:

  • 做的网站打不开产品网站建设必要性
  • 网站建设模板免费下载制作网站公司图片
  • 网站建设是一次性给钱还是什么pr模板免费下载网站
  • 大气物流公司网站源码建设家装网站
  • 网站后台关键词交流建设网站
  • 学院网站建设总结华北理工大学学科建设处网站
  • 简单的网站php开发教程用cms做的网站 的步骤
  • seo杭州seo快速排名利器
  • 谷歌不收录网站一个完整的短视频策划方案
  • 网页制作培训网站关于营销的最新的新闻
  • 免费查找资料的网站wordpress中文4.8
  • 凡科建设的网站如何中式建筑公司网站
  • 珠海网站建设品牌策划开发设计公司网站
  • 找别人做的网站怎样修改招聘app
  • 学校网站内容建设银行网站电脑上不去
  • 住建部工程建设标准网站上海室内设计事务所
  • 做外贸采购都是用什么网站网站重构方案
  • 企业网站做推广河南app开发
  • 海宁做网站的公司仿搜狐视频网站源码
  • 网站备案和不备案的上海制作网站公司网站
  • 网站建设专业介绍在线平面图设计
  • 临时工找工作网站做美缝手机网站不收录
  • 凡科建站怎么样网络推广网站培训班
  • 优惠券的网站怎么做的网站建设业务元提成
  • 网站开发项目组成员免费建网站的app
  • 怎样自己做公司网站驻马店logo设计公司
  • 知名网站制作公司排名徐州人才网最新招聘2023
  • 网站建设与网页设计难学吗做彩票的网站
  • 请问怎么做网站郑州小程序开发制作
  • 城乡建设网站职业查询系统小公司根本办不了icp许可证