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

本文介绍了一个自定义的调试宏实现方案,通过预处理指令和宏定义来控制不同部分的调试输出,适用于CAN、GPS和GSM等模块。该调试宏可以根据不同的需求启用或禁用特定模块的日志输出。
#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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值