处理告警“ warning #69-D integer conversion resulted in truncation”的方法

19 篇文章 5 订阅

今天分享一个常见的语法告警,就是实参与形参的类型参数对于不上

错误之处:

首先我们先看一下告警提示:告警:c(49): warning: #69-D: integer conversion resulted in truncation(其翻译过来意思就是:整数转换导致截断)这个我们后面讲解就知道为什么这么提示了

首先看一下我当时报警的语句:

//file1.h---START
#define PageSize  300
void I2C_EE_BufferWrite(u8* pBuffer, u8 WriteAddr, u8 NumByte);
//file.h---END

//file1.c---START
//定义的函数
void I2C_EE_BufferWrite(u8* pBuffer, u8 WriteAddr, u8 NumByte)
{
	.....
}
//file1.c--END

//file2.c---START
//这里调用函数
I2C_EE_BufferWrite(Buffer, Addr, PageSize); //此句为报警语句
//file2.c---END

我们可以从函数的第三个参数的值和相关形参的类型可以看出,因为我的宏定义将PageSize等效于300,也就是说这个值已经超出了u8的大小范围,所以才会提示“整数转换导致截断”。因为u8只能到255,不能超出。

解决方法:

所以这里我将函数的第三个参数的变量类型从u8改为了u16,使其范围变为0~65535,这样就不会超出其范围了

void I2C_EE_BufferWrite(u8* pBuffer, u8 WriteAddr, u16 NumByte)

或者将宏定义的值修改为小于256即可

#define PageSize  200

因此,如果也有小伙伴遇到相同的问题警告,可以去查看一下自己的代码是否存在代入的实参大小超出了形参定义的大小。

本人水平有限,上述信息仅供学习参考,如有错误和不妥之处,请多多指教。
另外创作不易,请勿抄袭,如果有帮助到大家的话希望大家可以点个赞,谢谢~

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OMGMac

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值