Arduino:将char指针写入SD卡文件时类型转换报错求助
类型转换错误的解决方法
方案1:显式强制转换
直接将char*类型的buffer转换成函数要求的const uint8_t*类型,代码修改为:
f.write((const uint8_t*)buffer, size);
char和uint8_t都是1字节长度的类型,这种转换不会导致数据丢失,只是明确告知编译器你确认该转换的安全性。
方案2:修改指针定义类型
从根源避免类型不匹配问题,直接将buffer定义为uint8_t*类型:
uint8_t *buffer = calloc(size, 1); // 直接调用写入函数 f.write(buffer, size);
calloc返回的void*可以直接隐式转换为任意指针类型(符合C标准),因此不需要额外的强制转换。
错误原因说明
f.write()的第一个参数要求传入const uint8_t*类型,但你定义的buffer是char*类型。char在多数编译器中是有符号类型,而uint8_t是无符号8位整数类型,C语言默认不允许这两种指针之间的隐式转换,因此触发类型不匹配的编译错误。
内容的提问来源于stack exchange,提问作者lena
相关产品推荐
相关产品推荐

