C语言使用宏定义实现等级调试输出PRINT_LEVEL

简介: C语言使用宏定义实现等级调试输出PRINT_LEVEL

在企业开发中,很多时候我们不会直接使用printf直接输出调试信息,在企业C语言开发调试输出中一般都会定义调试输出等级,越是注重编程质量的公司对于调试信息的等级划分越清晰,下面是调试部分代码的实现:

//* 调试专用代码部分  */
#define NANO 0
#define ERROR 1
#define WARN 2
#define INFO 3
#define ENTRY 4
#define DEBUG 5
#define PRINT_LEVEL DEBUG
//*   完整模式   */
#define pr(level, ...)                \
    do                                \
    {                                 \
        if (level <= PRINT_LEVEL)     \
            printf("[" #level "]"     \
                   "[" __DATE__       \
                   " " __TIME__       \
                   "] " __VA_ARGS__); \
    } while (0);
//*   纯净模式   */
#define pr_pure(level, ...)       \
    do                            \
    {                             \
        if (level <= PRINT_LEVEL) \
            printf(__VA_ARGS__);  \
    } while (0);
//*   完整模式   */
#define pr_err(...) pr(ERROR, ##__VA_ARGS__)
#define pr_warn(...) pr(WARN, ##__VA_ARGS__)
#define pr_info(...) pr(INFO, ##__VA_ARGS__)
#define pr_bug(...) pr(DEBUG, ##__VA_ARGS__)
#define pr_entry(inout) pr(ENTRY, "%s() %s", __func__, #inout)
//*   纯净模式   */
#define pr_err_pure(...) pr_pure(ERROR, ##__VA_ARGS__)
#define pr_warn_pure(...) pr_pure(WARN, ##__VA_ARGS__)
#define pr_info_pure(...) pr_pure(INFO, ##__VA_ARGS__)
#define pr_bug_pure(...) pr_pure(DEBUG, ##__VA_ARGS__)
#define pr_entry_pure(inout) pr_pure(ENTRY, "%s() %s", __func__, #inout)
//*   调试代码结束   */

打印调试输出:

总结:在这段代码中让我感受到了C语言宏编程的好处,以及对于企业级代码的一种了解,让我对以后的工作有一定的认知,希望这能让我以后的工作我能更快的上手。


相关文章
|
30天前
|
编译器 C语言
C语言宏定义(#define定义常量​、#define定义宏​、 带有副作用的宏参数、 宏替换的规则、 宏函数的对比)
C语言宏定义(#define定义常量​、#define定义宏​、 带有副作用的宏参数、 宏替换的规则、 宏函数的对比)
|
8天前
|
存储 编译器 C语言
C语言学习记录——调试技巧(VS2019环境下)
C语言学习记录——调试技巧(VS2019环境下)
15 2
|
17天前
|
程序员 C语言 C++
C语言实用的调试技巧
C语言实用的调试技巧
18 3
|
23天前
|
程序员 C语言 C++
C语言——调试技巧
C语言——调试技巧
|
25天前
|
程序员 编译器 测试技术
C语言初阶⑨(调试)(如何写出好的代码)(模拟实现strcpy和strlen)
C语言初阶⑨(调试)(如何写出好的代码)(模拟实现strcpy和strlen)
23 1
|
30天前
|
NoSQL Linux Redis
redis源码调试---vscode使用技巧-----C语言跳转到函数定义
redis源码调试---vscode使用技巧-----C语言跳转到函数定义
84 0
|
7月前
|
程序员 C语言
【C语言】如何写出好(易于调试)的代码——assert和const的使用
【C语言】如何写出好(易于调试)的代码——assert和const的使用
26 0
|
30天前
|
编译器 C语言
【C语言】什么是宏定义?(#define详解)
【C语言】什么是宏定义?(#define详解)
35 0
|
30天前
|
程序员 编译器 C语言
编程最重要的技术之一 — 调试(以C语言代码为例)
编程最重要的技术之一 — 调试(以C语言代码为例)
47 0
|
30天前
|
存储 程序员 编译器
C语言第十三弹---VS使用调试技巧
C语言第十三弹---VS使用调试技巧