../applications/LCC_Action.c:763:12:
warning: format '%u' expects argument of type 'unsigned int',
but argument 2 has type 'uint32_t {aka long unsigned int}' [-Wformat=]
printf("OTA FileLength = %u\r\n", OTA_FileLength);
构建的时候报错,除了把数据类型强制转换外,还有没有其他的处理方法?
试试 zu%
printf("OTA FileLength = %zu\r\n", OTA_FileLength);
一样报错,好像不是printf的问题,应该是OTA_FileLength这个数据的问题,可是我不知道怎么改?
@Shadows丶HY 应该不是的,如果想用printf函数,需要打开libc即可。
另外你说的是error还是warning?
warning
@Shadows丶HY
如果使用printf,请开启libc,否则会报error,同时使用%lu不会报warning。
或者直接使用rt_kprintf(),不会报错也不会有warning。
请参考如下:
@小小李sunny libc已经打开了,你看这张图,一样的函数,都带%u,然后有的就报警告,有的就不报,所以我感觉是数据的问题,可是不知道该怎么改

@Shadows丶HY printf:%u打印uint16可以,不会报warning。打印uint32是long int,当然要用%lu呀。
不是数据有问题,是打印的数据类型要一致。
@小小李sunny 感谢大佬。懂了懂了。就是说只要是uint32,就要用%lu,
@小小李sunny @小小李sunny 经你这么提醒,用 rt_kprintf 时还是小心点,缺少了类型检测。