|
发表于 2024-12-9 08:52:34
|
显示全部楼层
自己封装控制下吧。省事。
/* 创建互斥信号量 */
tx_mutex_create(&AppPrintfSemp,"AppPrintfSemp",TX_INHERIT);
/*
*********************************************************************************************************
* 函 数 名: App_Printf
* 功能说明: 线程安全的printf方式
* 形 参: 同printf的参数。
* 在C中,当无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表
* 返 回 值: 无
*********************************************************************************************************
*/
static void App_Printf(const char *fmt, ...)
{
char buf_str[200 + 1]; /* 特别注意,如果printf的变量较多,注意此局部变量的大小是否够用 */
va_list v_args;
va_start(v_args, fmt);
(void)vsnprintf((char *)&buf_str[0],
(size_t ) sizeof(buf_str),
(char const *) fmt,
v_args);
va_end(v_args);
/* 互斥操作 */
tx_mutex_get(&AppPrintfSemp, TX_WAIT_FOREVER);
printf("%s", buf_str);
tx_mutex_put(&AppPrintfSemp);
}
|
|