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语言宏编程的好处,以及对于企业级代码的一种了解,让我对以后的工作有一定的认知,希望这能让我以后的工作我能更快的上手。


相关文章
|
1月前
|
C语言
C语言调试
C语言调试
16 0
|
3月前
|
C语言 索引
C语言编译环境中的 调试功能及常见错误提示
这篇文章介绍了C语言编译环境中的调试功能,包括快捷键操作、块操作、查找替换等,并详细分析了编译中常见的错误类型及其解决方法,同时提供了常见错误信息的索引供参考。
|
6月前
|
编译器 C语言
C语言宏定义(#define定义常量​、#define定义宏​、 带有副作用的宏参数、 宏替换的规则、 宏函数的对比)
C语言宏定义(#define定义常量​、#define定义宏​、 带有副作用的宏参数、 宏替换的规则、 宏函数的对比)
|
5月前
|
程序员 C语言
C语言中的宏定义:从常量到高级技巧
C语言中的宏定义:从常量到高级技巧
278 1
|
5月前
|
存储 编译器 C语言
C语言学习记录——调试技巧(VS2019环境下)
C语言学习记录——调试技巧(VS2019环境下)
53 2
|
6月前
|
NoSQL Linux Redis
redis源码调试---vscode使用技巧-----C语言跳转到函数定义
redis源码调试---vscode使用技巧-----C语言跳转到函数定义
116 0
|
5月前
|
程序员 编译器 C语言
C语言中的assert.h:调试助手与断言详解
C语言中的assert.h:调试助手与断言详解
|
6月前
|
程序员 C语言 C++
C语言实用的调试技巧
C语言实用的调试技巧
48 3
|
6月前
|
程序员 编译器 测试技术
C语言初阶⑨(调试)(如何写出好的代码)(模拟实现strcpy和strlen)
C语言初阶⑨(调试)(如何写出好的代码)(模拟实现strcpy和strlen)
47 1
|
6月前
|
程序员 C语言 C++
C语言——调试技巧
C语言——调试技巧