Control del nivel de salida de impresión, conveniente para la depuración y la versión de lanzamiento, a menudo necesitamos ver cierta información de impresión al escribir código, pero cuando se publica la versión, puede haber demasiadas impresiones irrelevantes, por lo que se necesitan algunos consejos para controlar el nivel de impresión de la salida
/*打印等级,修改后面的宏定义可以改变函数输出打印等级*/
#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_printf
Description: 该函数能够通过设置的打印等级ALG_PRTINT_LEVER,来控制是否输出相关语句
Input:
Output:
Return:
0: Successful
ohters: 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);
}
}
Imagen de efecto
Ingrese la siguiente declaración
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);