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是不接受这个类型的参数的。

  • 相关阅读:
    122. 买卖股票的最佳时机 II
    45. 跳跃游戏 II
    134. 加油站
    55. 跳跃游戏
    714. 买卖股票的最佳时机含手续费
    121. 买卖股票的最佳时机
    860. 柠檬水找零
    开发环境安装合集(部分搬运)
    javascript的单例模式
    javascript 工厂模式
  • 原文地址:https://www.cnblogs.com/zuibunan/p/3308679.html
Copyright © 2011-2022 走看看