在企业开发中,很多时候我们不会直接使用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语言宏编程的好处,以及对于企业级代码的一种了解,让我对以后的工作有一定的认知,希望这能让我以后的工作我能更快的上手。