zoukankan      html  css  js  c++  java
  • DEBUG_PRINT

    在程序里为了调试的方便,我们经常要打印一些信息,如函数的返回值什么的,同时我们又不想在发布的程序中显示这些信息,于是我们这样实现:


    #ifdef _DEBUG
       printf("This is a debug information.\n");
    #endif


        但是,程序中需要打印的调试信息的地方可能很多,每次都这样写也挺麻烦,所以我们定义宏


    #ifdef _DEBUG
       #define debug_print(s) printf(s)
    #else
       #define debug_print(s)
    #endif


        这样,如果编译的时候定义了_DEBUG选项(DEBUG版),则将debug_print(s)替换成printf(s),程序在执行的时候打印调试信息;否则就将debug_print(s)用空行替换掉,程序在执行的时候也就没有什么显示了。

       现在问题又来了,这样的形式只能打印简单的信息,不能进行格式转换的,想下面的句子就不能正确执行了:
        debug_print("ret code = %d\n", ret);

       我们对原来的宏定义作简单的修改:


    #ifdef _DEBUG
       #define debug_print(s) printf s
    #else
       #define debug_print(s)
    #endif


       而在程序中我们这样使用:
       debug_print(("ret code = %d\n", ret));   // 注意,是两个括号!

    这样,在预编译的时候,s被("ret code = %d\n", ret)替换

    能力决定舞台,业绩体现价值,财富回报才智! 不积跬步,无以至千里;不积小流,无以成江海! 千里之行,始于足下。改变现在,就是改变未来。改变未来,从现在开始。
  • 相关阅读:
    【Vuejs】509- vue-loader工作原理
    【JS】508- MVVM原理介绍
    【Webpack】507- 基于Tree-shaking的多平台Web代码打包实践
    【TS】506- TypeScript 交叉类型
    【WebSocket】505- WebSocket 入门到精通
    【语雀知识库分享】HTTP面试宝典
    【JS】504- HTML5 之跨域通讯(postMessage)
    jQuery 选择器
    JQuery简介
    什么是JDBC的最佳实践?
  • 原文地址:https://www.cnblogs.com/general001/p/2276368.html
Copyright © 2011-2022 走看看