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


相关文章
|
21天前
|
编译器 C语言
【C语言】宏定义详解
在C语言中,宏定义是一种强大的预处理器功能,用于在编译之前对代码进行替换和条件编译。宏定义通过预处理器指令进行定义和使用,能够使代码更加灵活和可维护。本文将对C语言中的宏定义进行全面的讲解,包括各种相关的预处理器指令及其用法。
59 7
|
21天前
|
编译器 C语言
【C语言】宏定义详解
宏定义(Macro Definition)是C语言预处理器的一部分,通过`#define`指令引入。宏定义在编译前的预处理阶段进行文本替换,即将代码中的宏名替换为定义的内容。
123 6
|
21天前
|
编译器 C语言
【C语言】宏定义在 a.c 中定义,如何在 b.c 中使用?
通过将宏定义放在头文件 `macros.h` 中,并在多个源文件中包含该头文件,我们能够在多个文件中共享宏定义。这种方法不仅提高了代码的重用性和一致性,还简化了维护和管理工作。本文通过具体示例展示了如何定义和使用宏定义,帮助读者更好地理解和应用宏定义的机制。
38 2
|
23天前
|
NoSQL 编译器 C语言
C语言调试是开发中的重要技能,涵盖基本技巧如打印输出、断点调试和单步执行,以及使用GCC、GDB、Visual Studio和Eclipse CDT等工具。
C语言调试是开发中的重要技能,涵盖基本技巧如打印输出、断点调试和单步执行,以及使用GCC、GDB、Visual Studio和Eclipse CDT等工具。高级技巧包括内存检查、性能分析和符号调试。通过实践案例学习如何有效定位和解决问题,同时注意保持耐心、合理利用工具、记录过程并避免过度调试,以提高编程能力和开发效率。
38 1
|
24天前
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
41 2
|
2月前
|
C语言
C语言调试
C语言调试
24 0
|
7月前
|
编译器 C语言
C语言宏定义(#define定义常量​、#define定义宏​、 带有副作用的宏参数、 宏替换的规则、 宏函数的对比)
C语言宏定义(#define定义常量​、#define定义宏​、 带有副作用的宏参数、 宏替换的规则、 宏函数的对比)
|
4月前
|
C语言 索引
C语言编译环境中的 调试功能及常见错误提示
这篇文章介绍了C语言编译环境中的调试功能,包括快捷键操作、块操作、查找替换等,并详细分析了编译中常见的错误类型及其解决方法,同时提供了常见错误信息的索引供参考。
|
6月前
|
程序员 C语言
C语言中的宏定义:从常量到高级技巧
C语言中的宏定义:从常量到高级技巧
308 1
|
6月前
|
存储 编译器 C语言
C语言学习记录——调试技巧(VS2019环境下)
C语言学习记录——调试技巧(VS2019环境下)
61 2