一、无颜色版

一、自定义printf
#include <stdio.h>
#ifdef MYDEBUG
#define DEBUG(arg...) {\
printf("[debug]:%s:%s:%d ---->",__FILE__,__FUNCTION__,__LINE__);\
printf(arg);\
fflush(stdout);\
}
#else
#define DEBUG(arg...) {}
#endif
调用实例:
DEBUG("my debug......\n");
DEBUG("the a is %d\n",a); 

二、自定义printf
#ifdef DEBUG
#define D_STR(_STR_) printf("f:%s(l:%d)%s\n",__FILE__,__LINE__,_STR_);
#define D_LINE printf("f:%s(l:%d)-fn:%s\n",__FILE__,__LINE__,__FUNCTION__);
#define D_CHAR(_CHAR_) printf("f:%s(l:%d)%d\n",__FILE__,__LINE__,_CHAR_);
#define D_HEX(_HEX_) printf("f:%s(l:%d)[%x]\n",__FILE__,__LINE__,_HEX_);
#else
#define D_STR(_STR_) ;
#define D_LINE ;
#define D_CHAR(_CHAR_) ;
#define D_HEX(_HEX_) ;
#endif 

三、vfprintf
static void fprint_message_to_stdout(const char *format, va_list arg_ptr)
{
(void) vfprintf(stdout, format, arg_ptr);
}

二、彩色版

#define LOG_DEBUG 0
#define LOG_INFO 1
#define LOG_WARNING 2
#define LOG_ERR 3 

#define printf_error(s) \
printf("\e[1;31m[%s:%d func:%s]%s\e[0m\n", __FILE__, __LINE__, __FUNCTION__, s); 

#define printf_run(s) \
printf("\e[1;32m[%s:%d func:%s]%s\e[0m\n", __FILE__, __LINE__, __FUNCTION__, s); 

#define printf_warn(s) \
printf("\e[1;33m[%s:%d func:%s]%s\e[0m\n", __FILE__, __LINE__, __FUNCTION__, s); 

#define printf_log(t,s) \
switch (t) \
{ \
case LOG_ERR: \
printf_error(s); \
break; \
case LOG_DEBUG: \
case LOG_INFO: \
printf_run(s); \
break; \
case LOG_WARNING: \
printf_warn(s); \
default: \
printf(s); \
break; \
}

C/C++开发平时用的自定义debug函数的更多相关文章

  1. weex 项目开发(五)自定义 过滤函数 和 混合 及 自定义 Header 组件

    1.自定义  过滤函数 src / filters / index.js /** * 自定义 过滤函数 */ export function host (url) { if (!url) return ...

  2. Android Studio 自定义debug签名文件keystore

    Android Studio 自定义debug签名文件keystore

  3. iOS开发UI篇—Quartz2D(自定义UIImageView控件)

    iOS开发UI篇—Quartz2D(自定义UIImageView控件) 一.实现思路 Quartz2D最大的用途在于自定义View(自定义UI控件),当系统的View不能满足我们使用需求的时候,自定义 ...

  4. (Unity)Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进展混淆,避免被反编译

    Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进行混淆,避免被反编译. 1.打开VS,博主所用版本是Visual Studio 2013. 2.新建一个VC项目 ...

  5. C#微信公众号开发 -- (六)自定义菜单事件之CLICK

    微信公众号中当用户手动点击了按钮,微信公众号会被动的向用户发送文字消息或者图文消息. 通过C#微信公众号开发 -- (五)自定义菜单创建 我们知道了如何将CLICK类型的按钮添加到自己的微信公众平台上 ...

  6. ionic3+angular4开发混合app 之自定义组件

    这里主要是记录ionic3+angular4开发混合app时自定义组件,我想自定义组件的方法和angular4应该类似,具体在纯angular4中自定义组件,暂时没有实践,个人觉得差别不大,之后实践了 ...

  7. 转: Android 软件开发之如何使用Eclipse Debug调试程序详解(七)

    转自: http://www.uml.org.cn/mobiledev/201110092.asp Android 软件开发之如何使用Eclipse Debug调试程序详解(七)   发布于2011- ...

  8. 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)

    概述 最近,有客户向我们请求开发一个前端下拉控件,需求是显示了一个列表,其中包含可由用户单独选择的项目控件,该控件将在下拉列表中显示多选TreeView(树形图). 如今WijmoJS已经实现了该控件 ...

  9. 使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_132 最近疫情比较严重,很多公司依靠阿里旗下的办公软件钉钉来进行远程办公,当然了,钉钉这个产品真的是让人一言难尽,要多难用有多难用 ...

随机推荐

  1. mybatis 执行传入的任意sql语句

    dao类 /** * 自定义sql查询 * @param sqlContent * @return */ public List<LinkedHashMap<String, Object& ...

  2. Windows 7下Maven3.0.3的安装

    1.去Maven官网下载zip的maven3.0.3压缩包 2.将安装包解压到某目录,我在这里解压到D:\Program Files (x86)\apache-maven-3.0.3 3.设置系统变量 ...

  3. linux CMakeLists.txt 语法

    CMake入门教程 参考文献:http://www.ibm.com/developerworks/cn/linux/l-cn-cmake/index.html 官方网址:http://www.cmak ...

  4. Oracle之数据库安全

    密码破解,大部分其实是通过枚举的方式,列出可能的密码,然后逐个尝试,直到找到真正的密码,有时也叫暴力破解.接下来,我们将举几个密码破解的例子. n  密码破解例1--- OrakelCrackert ...

  5. tensorflow c++接口的编译安装与一些问题记录

    参考这篇文章安装,依次安装bazel,protocbuf,eigen3,然后下载tensorflow源码,编译c++ api,将编译结果拷贝到搜索路径 最后测试案例时遇到一些问题 (1)fatal e ...

  6. 能显示git分支的终端提示配置

    之前都是跟随潮流,安装zsh然后oh-my-zsh,选一个看起来顺眼的主题,一通瞎配置,很酷炫. 可是即使只有一个git插件,oh-my-zsh每次启动的时候都很慢,起码有好几秒,而且有时候zsh还会 ...

  7. 【Spark】RDD操作具体解释2——值型Transformation算子

    处理数据类型为Value型的Transformation算子能够依据RDD变换算子的输入分区与输出分区关系分为下面几种类型: 1)输入分区与输出分区一对一型 2)输入分区与输出分区多对一型 3)输入分 ...

  8. LeetCode Add Binary |My Solution

    Given two binary strings, return their sum (also a binary string). For example, a = "11" b ...

  9. 制作mac U盘启动

    之前在windows电脑上装系统,U盘,光盘都可以! 当然在mac电脑上也是可以的! 公司电脑mac mini 没有光驱,只有用U盘装了!折腾了一天,就是做不上10.9的U盘启动,最后发现是,10.9 ...

  10. <译>流计算容错

    这篇文档描述了Flink的流式计算的容错机制 Introduction Checkpointing Barriers State Exactly Once vs. At Least Once Reco ...