zoukankan      html  css  js  c++  java
  • 编写自己的TRACE函数

    TRACE函数是MFC里面的一个宏,是对OutputDebugString的封装。

    OutputDebugString的作用是输出调试信息,不要以为这个函数只有在Debug版本才会打日志,即使是Release版本,这个函数也能打日志。

    OutputDebugString这个函数的实现机制是怎样,到底把日志打到了哪里,这个以后有兴趣可以研究一下。

    TRACE宏相比于OutputDebugString函数的优点在于:

    如果是非Debug版本,TRACE宏是不会打日志的。

    TRACE宏可以像printf那样方便地写各种格式。

    不过TRACE宏只能在MFC里面用,要想在别的地方用的话比较麻烦,不如自己实现一个。

    下面的代码描述了怎样将OutputDebugString函数封装成TRACE函数。

    为了封装TRACE,主要是要解决那个不定长参数的问题。

    关于C语言中不定长参数使用技巧,可以找点资料看一看,大致上的思路是计算偏移量,通过偏移量来确定每个参数的位置。

    计算偏移量什么的也就是依赖了上面的几个宏va_start,va_arg,va_end。

    这里使用了_vsntprintf函数,是因为这个函数可以接收va_list类型的参数,而sprintf是不接受这个类型的参数的。

  • 相关阅读:
    软件工程第二次作业
    软件工程第1次作业
    软件工程第0次作业
    第4次作业-案例分析
    第3次作业-四则运算
    第2次作业-效能分析
    第1次作业-词频统计
    第0次作业
    关于 石墨文档客户端 的案例分析
    结对编程
  • 原文地址:https://www.cnblogs.com/zuibunan/p/3308679.html
Copyright © 2011-2022 走看看