C/C++ 简单debug宏函数

2023-05-16

//debug.h

#ifndef _DEBUG_H__
#define _DEBUG_H__

#ifdef __cplusplus
extern "C"
{
#endif

#include <stdio.h>
#include <stdint.h>
#include <sys/time.h>
#include <errno.h>
#include <string.h>
#include <sys/timeb.h>
#include <time.h>

/*    __FILE__    */
///home/intell/code/test/example.cpp
/*    __FILENAME__ */
//example.cpp
#define __FILENAME__ (strrchr(__FILE__, '/') ? (strrchr(__FILE__, '/') + 1):__FILE__)

#define Error(...) \
do{ \
	struct	tm		*ptm;\
	struct	timeb	stTimeb;\
	static	char	szTime[32] = {0};\
	ftime(&stTimeb);\
	ptm = localtime(&stTimeb.time);\
	sprintf(szTime, "%02d:%02d:%02d.%03d",ptm->tm_hour, ptm->tm_min, ptm->tm_sec, stTimeb.millitm);\
    fprintf(stderr, "%s[ERROR  ]%s:%d:%s()",szTime,__FILENAME__,__LINE__,__FUNCTION__); \
    fprintf(stderr, __VA_ARGS__); \
    fprintf(stderr, "\n"); \
}while(0)    

#define Warning(...) \
do{ \
	struct	tm		*ptm;\
	struct	timeb	stTimeb;\
	static	char	szTime[32] = {0};\
	ftime(&stTimeb);\
	ptm = localtime(&stTimeb.time);\
	sprintf(szTime, "%02d:%02d:%02d.%03d",ptm->tm_hour, ptm->tm_min, ptm->tm_sec, stTimeb.millitm);\
    fprintf(stdout, "%s[WARNING]%s:%d:%s()",szTime,__FILENAME__,__LINE__,__FUNCTION__); \
    fprintf(stdout, __VA_ARGS__); \
    fprintf(stdout, "\n"); \
}while(0)    

#define Info(...) \
do{ \
	struct	tm		*ptm;\
	struct	timeb	stTimeb;\
	static	char	szTime[32] = {0};\
	ftime(&stTimeb);\
	ptm = localtime(&stTimeb.time);\
	sprintf(szTime, "%02d:%02d:%02d.%03d",ptm->tm_hour, ptm->tm_min, ptm->tm_sec, stTimeb.millitm);\
    fprintf(stdout, "%s[INFO   ]%s:%d:%s()",szTime,__FILENAME__,__LINE__,__FUNCTION__);	\
    fprintf(stdout, __VA_ARGS__); \
    fprintf(stdout, "\n"); \
}while(0)  

  
#define Debug(...) \
do{ \
	struct	tm		*ptm;\
	struct	timeb	stTimeb;\
	static	char	szTime[32] = {0};\
	ftime(&stTimeb);\
	ptm = localtime(&stTimeb.time);\
	sprintf(szTime, "%02d:%02d:%02d.%03d",ptm->tm_hour, ptm->tm_min, ptm->tm_sec, stTimeb.millitm);\
    fprintf(stdout, "%s[DEBUG  ]%s:%d:%s()",szTime,__FILENAME__,__LINE__,__FUNCTION__); \
    fprintf(stdout, __VA_ARGS__); \
    fprintf(stdout, "\n"); \
}while(0)    

#ifdef __cplusplus
}
#endif


#endif  /*_DEBUG_H__*/
10:59:17.105[DEBUG  ]main.cpp:111:main()debug
10:59:17.105[INFO   ]main.cpp:112:main()info
10:59:17.105[WARNING]main.cpp:113:main()warning
10:59:17.105[ERROR  ]main.cpp:114:main()error
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C/C++ 简单debug宏函数 的相关文章

随机推荐

  • Deepin 深度操作系统安装教程

    简介 深度操作系统 deepin 是一个致力于为全球用户提供美观易用 安全稳定服务的Linux发行版 xff0c 同时也一直是排名最高的来自中国团队研发的Linux发行版 xff0c 下面我们开始从下载镜像到安装系统一步步进行讲解 系统下载
  • 香橙派 OrangPi PC 安装Lakka游戏系统及使用指南

    香橙派 Orange Pi PC Orange Pi PC 采用了全志四核A7高性能处理器Allwinner H3 xff0c 集成以太网 DC电源输入 视频 音频输出等接口 xff0c 支持HDMI AVOUT视频输出等功能 尽管体积很小
  • 我把华为云的Ubuntu 18.04升级到了Ubuntu 22.04

    华为云建站有些年头了 xff0c 当时装的是ubuntu18 04 xff0c 停止维护更新日期是2023年4月 xff0c 只剩半年时间就该停服了 xff0c 这么看来是时候升级以下系统版本了 xff0c 不然升级版本都可能会有问题 由于
  • Ubuntu Budgie 22.04 设置中文语言并安装拼音输入法

    之前将ubuntu server 22 04 安装了 Budgie Desktop 桌面环境 xff0c 系统语言是英文的 xff0c 如果要作为桌面使用还有些不适应 xff0c 我们要如何将系统语言切换为中文并支持中文输入呢 xff1f
  • OpenKylin常用软件安装

    由于OpenKylin仍处于测试阶段 xff0c 应用商店软件并不全 xff0c 所以很多软件的安装非常麻烦 xff0c 以下列出了一些常用软件的安装方法 需要的童鞋可以直接复制命令后进行安装 xff0c 安装软件需要使用root权限 xf
  • 利用sourceinsight宏(Quicker.em)提高编码效率和质量

    利用sourceinsight宏 Quicker em 提高编码效率和质量 Marco是sourceinsight软件一个强大的功能 xff0c 用户可以通过编写宏来实现自定义功能 这里有个比较流行的宏文件quicker em xff0c
  • Git Clone 报错 `SSL certificate problem: unable to get local issuer certificate`

    如果您在尝试克隆Git存储库时得到 SSL certificate problem unable to get local issuer certificate 的错误 这意味着Git无法验证远程存储库的SSL证书 如果SSL证书是自签名的
  • 树莓派从源码构建安装Git最新版

    1 查看Git版本 首先我们通过SSH客户端连接树莓派 在树莓派中通过查看 Git 版本信息 xff0c 我们只能看到最高版本显示为 2 30 2 xff0c 并且通过apt安装也无法将Git更新到最新版 git version sudo
  • linux安装部署免费confluence wiki

    Centos7安装部署免费confluence wiki 知识库 详细操作步骤 前言 xff1a confluence是团队协作软件 xff0c 改变团队工作方式 xff0c 作为现代化办公不可缺少的工具 wiki所需的安装包 xff1a
  • 对printf源码的分析

    对printf源码的分析 一 printf的源码如下 span class token macro property span class token directive keyword include span span class to
  • iPhone开发:可拉伸的图片

    还记得在Windows下用MFC或WTL写用户界面程序的时候 xff0c 为了给可改变大小的对话框加上背景图案 xff0c 需要对设计师提供的图片进行裁剪 把图片切成九块 xff0c 其中四个角是不拉伸的 xff0c 四条棱边可以在一个方向
  • 解决在KDE桌面环境WebStorm不能输入中文问题

    由于jetbrains官方包的问题 xff0c Fcitx5输入法文字候选托盘暂时不能更改 xff0c 如有最新解决办法 xff0c 可查看ArchWiki官方 xff0c 或者查看jetbrains官方 排查错误 cat etc loca
  • NAS如何使用SnapShot快照功能?

    Snapshot是基于Btrfs文件系统产生的快速备份和还原数据的第三方应用 xff0c 利用Snapshot为数据提供保护 xff0c 以防止因意外删除 应用程序崩溃 数据损毁和病毒所造成的数据丢失 1 TOS应用中心 xff0c 找到S
  • 备份电脑不求人,"时间机器"轻松备份你的Mac

    相比Windows 自带的系统还原功能 xff0c Mac有内置的Time Machine功能 xff0c 可以方便我们进行整机备份 xff0c 在关键时刻成为你重要数据的一颗 后悔药 xff01 Time Machine xff08 时间
  • NESTJS 服务化架构设计和项目搭建

    创建项目很简单 xff0c nest cli一键创建 xff0c 关键是如何基于nestjs现有能力进行架构设计 架构设计 项目背景 项目涉及的底层数据全部来自于公司的一个公共服务 jsf xff0c 该公共服务可对接口进行发布和订阅 xf
  • 视频转码 ffmpeg hevc to h264

    通过ffmpeg将hevc编码的MP4视频转码为h264编码 fmpeg i inputfile map 0 c a copy c s copy c v libx264 output mp4 顺带旋转角度也调整为0 参考 xff1a htt
  • linux下查看进程的状态 /proc/[pid]/status

    查看进程的状态 xff1a 1 查看进程的pid xff0c 以java为例 xff1a ps ef grep java 2 查看进程状态 xff1a cat proc pid status 关键字 linux root 64 localh
  • paho.mqtt.cpp交叉编译

    开发板 rk3288 43 lubuntu 16 04 主机 Ubuntu16 04 编译之前可能要安装一些软件 xff0c 可参考paho mqtt cpp文档 xff1a https github com eclipse paho mq
  • mosquitto-1.6.10 交叉编译

    openssl 1 0 2l tar gz mosquitto 1 6 10 tar gz 由于mosquitto 1 6 10版本较新 xff0c 需要选择openssl 1 0 2及较新版本 1 openssl span class t
  • C/C++ 简单debug宏函数

    span class token comment debug h span span class token macro property span class token directive hash span span class to