宏定义调试打印功能

[复制链接]
查看673 | 回复9 | 2024-1-8 10:11:05 | 显示全部楼层 |阅读模式

本帖最后由 曹县 于 2024-1-9 16:14 编辑

宏定义调试打印功能

我们单片机有时候没法模拟调试,只能通过串口打印的信息看程序跑到哪里去了,所以需要增加一些打印标记,便于后续发现问题

但是打印太多的信息回占用io,对于一些设备来说消耗性能很大,所以一般正式固件就需要把打印关掉;

程序发布的时候,手动一个一个删除printf肯定不现实,而且容易出错,把代码搞坏了;

有时发布后还需要回来继续调试,所以需要一个开关可以一键把打印信息打开和关闭

这里介绍一种简单,烂大街,好用的方式:

/* debug 宏定义 */
#ifndef MY_DEBUG_H_
#define MY_DEBUG_H_

#define DEBUG 1
#if DEBUG
#define PRF(fmt, args...)                                 \
    do                                                       \
    {                                                        \
        printf("< Line:%d  :%s>> ", __LINE__, __FUNCTION__); \
        printf(fmt, ##args);                                 \
    } while (0)
#else
#define DBG_PRINTF(fmt, args...)
#endif

#define LOG()                                                \
    do                                                       \
    {                                                        \
        printf("< Line:%d  :%s>> \n", __LINE__, __FUNCTION__); \
    } while (0)

#endif /* MY_DEBUG_H_ */
#define DEBUG 1
int main() 
{
    uint32_t a = 23;
    PRF("%d\n",a);
    int b = 22;
}
 gcc –E hello.c –o hello.i

预编译之后,代码就变成

#define DEBUG 1
int main() 
{
    uint32_t a = 23;
    do                                                       \
    {                                                        \
        printf("< Line:%d  :%s>> ", __LINE__, __FUNCTION__); \
        printf("%d\n",a);                                 \
    } while (0);
    int b = 22;
}

DEBUG宏弄成0就是

#define DEBUG 0
int main() 
{
    uint32_t a = 23;

    int b = 22;
}
回复

使用道具 举报

lazy | 2024-1-8 10:19:10 | 显示全部楼层
真不错
回复

使用道具 举报

1084504793 | 2024-1-8 10:31:41 | 显示全部楼层
回复

使用道具 举报

san | 2024-1-8 10:36:39 | 显示全部楼层
回复

使用道具 举报

爱笑 | 2024-1-8 10:57:44 | 显示全部楼层
用心做好保姆工作
回复

使用道具 举报

WT_0213 | 2024-1-8 11:06:09 | 显示全部楼层
回复

使用道具 举报

bzhou830 | 2024-1-8 15:24:30 | 显示全部楼层
真不错
选择去发光,而不是被照亮
回复

使用道具 举报

is麟儿 | 2024-1-8 19:56:19 | 显示全部楼层
不支持markdown语法显示吗?
回复 支持 反对

使用道具 举报

曹县 | 2024-1-9 16:14:35 | 显示全部楼层
is麟儿 发表于 2024-1-8 19:56
不支持markdown语法显示吗?

刚刚搞了一下,原来用错编辑器了
回复 支持 反对

使用道具 举报

WT_0213 | 2024-1-9 16:48:54 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则