c - 为什么第一次调用 va_arg 函数得到一个奇怪的数字?
问题描述
我正在为我的 STM32 开发板基于 STM32F412RET6 处理器和 STM32CubeIde 和 FREERTOS 的固件。当我第一次调用库的va_arg
函数时, stdarg.h
给我一个奇怪的号码。为什么?
编码:
void readFloat(int n, ...){
int val;
va_list vl;
va_start(vl,n);
for (int i=0;i<n;i++)
{
val=va_arg(vl,int);
}
va_end(vl);
}
/**
* @brief Function implementing the defaultTask thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_StartDefaultTask */
void StartDefaultTask(void *argument)
{
readFloat(3, 1, 2, 3);
for(;;)
{
osDelay(1);
}
/* USER CODE END 5 */
}
调试结果:
解决方案
推荐阅读
- asp.net - 如何托管 ASP.Net Web 应用程序
- sql-server - 字符串或二进制数据将被截断:替换臭名昭著的错误 8152
- mysql - 在.net core mysql C#中不能创建超过max_prepared_stmt_count
- javascript - 根据另一个可能不完整的数组对数组进行排序
- wget - 使用 Wget 下载包含所有支持 css/js/img 文件的网页
- elasticsearch - 使用 Elasticsearch 在 AWS ECS 上部署 jaeger
- node.js - 为什么 Chrome 从 2 个端口连接到我的 nodejs 服务器?
- webpack - 如何将 sourcemap 添加到我自己的 webpack 加载器?
- angular - 角度响应数据未显示在 html 页面中
- angular - Observable 最终无法从 err 状态传入