美文网首页
[转]C/C++关于printf的宏定义封装

[转]C/C++关于printf的宏定义封装

作者: NooneIam | 来源:发表于2019-10-30 17:11 被阅读0次

在调试代码的过程中经常使用到printf进行信息输出,需要写很多信息,写的多了感觉不是很方便,特用宏进行封装,然后可以直接进行调用,比较方便

DebugLog.h

#ifndef _DEBUGLOG_H
#define _DEBUGLOG_H
 
#define ESC_START     "\033["
#define ESC_END       "\033[0m"
#define COLOR_FATAL   "31;40;5m"
#define COLOR_ALERT   "31;40;1m"
#define COLOR_CRIT    "31;40;1m"
#define COLOR_ERROR   "31;40;1m"
#define COLOR_WARN    "33;40;1m"
#define COLOR_NOTICE  "34;40;1m"
#define COLOR_INFO    "32;40;1m"
#define COLOR_DEBUG   "36;40;1m"
#define COLOR_TRACE   "37;40;1m"
 
#define Msg_Info(format, args...) (printf( ESC_START COLOR_INFO "[INFO]-[%s]-[%s]-[%d]:" format ESC_END, __FILE__, __FUNCTION__ , __LINE__, ##args))
 
#define Msg_Debug(format, args...) (printf( ESC_START COLOR_DEBUG "[DEBUG]-[%s]-[%s]-[%d]:" format ESC_END, __FILE__, __FUNCTION__ , __LINE__, ##args))
 
#define Msg_Warn(format, args...) (printf( ESC_START COLOR_WARN "[WARN]-[%s]-[%s]-[%d]:" format ESC_END, __FILE__, __FUNCTION__ , __LINE__, ##args))
 
#define Msg_Error(format, args...) (printf( ESC_START COLOR_ERROR "[ERROR]-[%s]-[%s]-[%d]:" format ESC_END, __FILE__, __FUNCTION__ , __LINE__, ##args))
 
#endif

测试代码:

#include<stdio.h>
#include "DebugLog.h"
int main(int argc, const char *argv[])
{
    Msg_Info("test!\n");
    Msg_Warn("%d\n",10);
    Msg_Error("%s\n","error");
    Msg_Debug("Debug\n");
    return 0;
}

执行结果:


image.png

————————————————
版权声明:本文为CSDN博主「Poetry_And_Distance」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Poetry_And_Distance/article/details/81007604

相关文章

  • [转]C/C++关于printf的宏定义封装

    在调试代码的过程中经常使用到printf进行信息输出,需要写很多信息,写的多了感觉不是很方便,特用宏进行封装,然后...

  • C++ 宏定义

    define 中的三个特殊的符号 #define Conn(x,y) x##y #define ToChar(x)...

  • C++ 宏定义

    定义宏 预处理器不是编译器,预处理器主要完成文本替换的操作,预处理器都是用 #xxx 的写法 头文件经常有类似的声...

  • c++技巧

    使用c/c++宏进行编程 c/c++中宏的是在预处理的过程中进行展开,可以用来进行函数的声明和定义. 在阅读lib...

  • C/C++ 宏定义

    宏定义在C语言占有举足轻重的地位。底层框架自不用说,为了编译优化和方便,以及跨平台能力,宏被大量使用,可以说底层开...

  • 深入理解C++11 2.5 static_assert

    在C++中,标准在或者 头文件中未程序员提供了assert宏,例如: C++中,可以通过定义宏N...

  • c++基础(宏)

    有关 c++ 中宏的定义以及使用是今天的重点内容。 C++ 的宏定义将一个标识符定义为一个字符串,源程序中的该标识...

  • 常见源码中的宏定义

    1._ _cplusplus 、extern "c" { }_ _cplusplus 是c++中特有的宏定义,在我...

  • 使用awk命令将C/C++ 宏定义转换为Java定义

    使用awk命令将C/C++ 宏定义转换为Java定义 项目中Hal 层的头文件的宏定义数字需要被上层应用的Java...

  • STL标准模板库

    阅读须知: C++语言实现了自定义模板,大家可以自己封装模板. 同样,C++的大牛们已经自己封装了模板库,类似于系...

网友评论

      本文标题:[转]C/C++关于printf的宏定义封装

      本文链接:https://www.haomeiwen.com/subject/emqavctx.html