/打印等级,修正后面的宏定义可以改变函数输出打印等级/#define ALG_PRTINT_LEVER PRINT_LEVEL_WRN#define ALG_PRTINT(...) SAL_printf(__VA_ARGS__)#define ALG_PRT(...) ALG_PRTINT(__FUNCTION__, __LINE__, PRINT_LEVEL_UNLIMIT, __VA_ARGS__)#define ALG_DBG(...) ALG_PRTINT(__FUNCTION__, __LINE__, PRINT_LEVEL_DBG, __VA_ARGS__)#define ALG_WAR(...) ALG_PRTINT(__FUNCTION__, __LINE__, PRINT_LEVEL_WRN, __VA_ARGS__)#define ALG_ERR(...) ALG_PRTINT(__FUNCTION__, __LINE__, PRINT_LEVEL_ERR, __VA_ARGS__)/// @enum HAT_SAL_PRT_LEVEL_E @brief 打印输出的等级/typedef enum _PRT_LEVEL_E_{PRINT_LEVEL_ERR = 0, /缺点打印信息/PRINT_LEVEL_WRN = 1, /警告打印信息/PRINT_LEVEL_DBG = 2, /调试打印信息/PRINT_LEVEL_UNLIMIT = 3, /无限制打印信息/PRINT_LEVEL_NOPRT = 4, /没有打印信息/} PRT_LEVEL_E;/Function:SAL_printfDescription: 该函数能够通过设置的打印等级ALG_PRTINT_LEVER,来掌握是否输出干系语句Input:Output:Return:0:Successfulohters:Failed/void SAL_printf(const char pFun, UINT line, PRT_LEVEL_E levelParam, const char fmt, ...){static INT8 g_printfInfo[4][16] = { "ERR", "WAR", "DBG", "INF" };va_list p;if (ALG_PRTINT_LEVER == PRINT_LEVEL_NOPRT || levelParam == PRINT_LEVEL_NOPRT){return;}if (levelParam <= ALG_PRTINT_LEVER ){va_start(p, fmt);printf("[DSP][%s][%s][%4d] ", g_printfInfo[levelParam], pFun, line);vprintf(fmt, p);va_end(p);}}
效果图
输入如下语句
printf("[ALG ERROR][函数:%s][行号:%d],图片正常读取\n", __FUNCTION__, __LINE__);ALG_ERR("你好\n");ALG_ERR("你好%d\n", 245);ALG_WAR("你好\n");ALG_WAR("你好%d\n", 245);ALG_DBG("你好\n");ALG_PRT("你好%d\n", 245);ALG_ERR("你好%d\n", 245);
设置级别 PRINT_LEVEL_WRN
即程序运行出错,或者随意马虎对后面的程序运行有决定性浸染的语句,便会输出。

设置级别 PRINT_LEVEL_WRN
设置级别 PRINT_LEVEL_UNLIMIT无限制打印输出,即所有调试打印都会输出。
无限制打印输出,即所有调试打印都会输出。
在编写代码时,出错信息可以用:
ALG_ERR("你好\n");
警告信息可以用:
ALG_WAR("你好\n");
一样平常调试信息可以连续降落输出等级用:
ALG_DBG("你好\n"); ALG_PRT("你好%d\n", 245);