封装printf函数,针对工程中不同的模块(can,gps, gsm)进行调试输出

  1. 云栖社区>
  2. 博客列表>
  3. 正文

封装printf函数,针对工程中不同的模块(can,gps, gsm)进行调试输出

吴英强 2014-04-19 15:02:00 浏览413 评论0

摘要: #ifndef DEBUG_H #define DEBUG_H #include //Usage: //just include this file and

#ifndef DEBUG_H
#define DEBUG_H


#include <stdio.h>
//Usage:
//just include this file and define MYDEBUG_PART like
//
//int MYDEBUG_PART=MYDEBUG_CAN
//
//in the program use the command by
//mydebug(can, "test %d with %s\n", 100, "hello,world");
//mydebug_can("test %d with %s\n", 100, "hello,world");
//#define MYDEBUG_PREFIX "--wuyq:can--"


#define MYDEBUG_PREFIX __FILE__


#define MYDEBUG_OFF 0
#define MYDEBUG_CAN 1
#define MYDEBUG_GPS_ON 2
#define MYDEBUG_GSM 3
     
#ifdef DEBUG_CAN_ON
#define mydebug_can(msg...) \
do{ \
    if (MYDEBUG_CAN>=MYDEBUG_OFF) { \
        printf(MYDEBUG_PREFIX msg); \
    } \
 }while(0)
#else 
#define mydebug_can(msg...) 
#endif


#define mydebug_gps(msg...) \
do{ \
    if (MYDEBUG_GPS_ON>=MYDEBUG_OFF) { \
        printf(MYDEBUG_PREFIX msg); \
    } \
    else{\
       /*空函数*/\
    } \
 }while(0)


#define mydebug_gsm(msg...) \
do{ \
    if (MYDEBUG_GSM>=MYDEBUG_OFF) { \
        printf(MYDEBUG_PREFIX msg); \
    } \
 }while(0)


#define mydebug(part,  msg...) mydebug_##part(msg)


#endif


gps.c:

#include "debug.h"

int main()
{
	mydebug(gps, "gps program is running\n");
	mydebug_gps(" hello gps.c----\n");
	return 0;
}


can.c:
#include "debug.h"


int main()
{
	mydebug_can(" hello can.c!!!\n");
	return 0;
}


gcc - can.c -DDEBUG_CAN_ON -o can


【云栖快讯】阿里云栖开发者沙龙(Java技术专场)火热来袭!快来报名参与吧!  详情请点击

网友评论

吴英强
文章349篇 | 关注9
关注
Alibaba Cloud Toolkit 面向开发者 IDE 平台,在 IDE (比如 E... 查看详情
阿里云机器学习是基于阿里云分布式计算引擎的一款机器学习算法平台。用户通过拖拉拽的方式可视化的... 查看详情
一项针对阿里云资源和互联网应用进行监控的服务。云监控服务可用于收集获取阿里云资源的监控指标,... 查看详情
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效... 查看详情
双12

双12