作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 va_start 从省略号中检索我的参数。
这是我的代码:
char str[256];
void nrf_log_flash(bool is_to_save, char * log, ...){
va_list args;
va_start(args, log);
int ret = vsprintf(str, log, args);
if(is_to_save){
sprintf(str, "%s : %s\n", nrf_cal_get_time_string(false), log);
//my_nrf_log_add(str, strlen(str));
}
NRF_LOG_INFO("%s", log);
NRF_LOG_INFO("%s", str);
NRF_LOG_INFO("%d", ret);
va_end(args);
}
这是我的使命:
nrf_log_flash(true, "button %d pressed, %u, %x, %c", 2, 3658, 0xca, 'a');
但是我的 va_list 是空的。我做错了什么?
最佳答案
行后
int ret = vsprintf(str, log, args);
你的str变量包含格式化的字符串(例如str是“button 2按下,3658,ca,a”。但是,你的下一句会覆盖这个数据。当你调用sprintf时,并用'log覆盖str中的数据' 变量,格式为(“按钮 %d 按下,%u,%x,%c”)
if(is_to_save){
//THIS CODE OVERWRITE YOUR STR BUFFER
sprintf(str, "%s : %s\n", nrf_cal_get_time_string(false), log);
//my_nrf_log_add(str, strlen(str));
}
顺便说一句,建议使用 snprint 和 vsnprintf 以避免缓冲区溢出。由于格式中包含'%s',因此可能会打印出大于256字节的大字符串。
关于c - nRF52840 上 va_start() 的省略号问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51874210/
我有一些带有此 uuid 的信标: 0112233445566778899aabbccddeeff0和 Major = 1 但它们的 Minor 不同。 这是固件代码的一部分,显示这些数字: #def
问题总结和背景 作为大学项目的一部分,我们需要使用自定义应用程序连接到蓝牙 LE 模块 (BL654) 以更新特性。 问题是,如果不先做一个变通办法,我就无法连接到我们的模块。我能够毫无问题地搜索设备
我正在通过 BLE 从中央 (Android) 向 nRF52832 发送命令,并接收回 SPI 数据,但格式错误。如何按原样转换/显示此数据。 当我向 nRF52832 发送 '1' 时,我希望收到
我是一名优秀的程序员,十分优秀!