找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10356|回复: 7
收起左侧

使用keil编译过程中出现编号同为167-D的警告,请问如何解决,新手小白,求带,谢谢

[复制链接]
ID:889492 发表于 2021-3-9 15:58 | 显示全部楼层 |阅读模式
使用keil进行编译过程中出现两种编号同为167-D警告编码,这里先把错误信息附上
..\HARDWARE\LCD\lcd.c(352): warning:  #167-D: argument of type "const char *" is incompatible with parameter of type "const u8 *"
                                  WriteA_Chinese(mode,x,y,p);
..\HARDWARE\LCD\lcd.c(385): warning:  #167-D: argument of type "u8 *" is incompatible with parameter of type "const char *"
          LCD_ShowAllString(1,x0,y0*8,pp);
..\HARDWARE\LCD\lcd.c(389): warning:  #167-D: argument of type "u8 *" is incompatible with parameter of type "const char *"
          LCD_ShowAllString(show_mode,x0,y0*8,pp);
..\HARDWARE\LCD\lcd.c: 3 warnings, 0 errors

附图中是警告存在位置的代码截图
请问该对此警告如何修改,新手小白感谢各位大佬的解答
1615276578(1).png
回复

使用道具 举报

ID:277550 发表于 2021-3-9 16:25 | 显示全部楼层
函数的最后的参数
const char *

修改成
const unsigned char *
或 const  u8 *
回复

使用道具 举报

ID:367369 发表于 2021-3-9 16:34 | 显示全部楼层
你的参数类型有差别, u8的类型是unsigned char    与char类型不一致
const修饰的变量表示其值不能被改变
回复

使用道具 举报

ID:889492 发表于 2021-3-9 16:38 | 显示全部楼层
devcang 发表于 2021-3-9 16:25
函数的最后的参数
const char *

您说的是第一个警告的问题吧,是要把352行改成这样下面这样吗
WriteA_Chinese(const u8* mode,x,y,p);
编译之后并没有解决问题,还出现了一个错误
回复

使用道具 举报

ID:889492 发表于 2021-3-9 16:40 | 显示全部楼层
game灬boy 发表于 2021-3-9 16:34
你的参数类型有差别, u8的类型是unsigned char    与char类型不一致
const修饰的变量表示其值不能被改变

那请问像这种情况应该如何在代码中修改啊,
回复

使用道具 举报

ID:871393 发表于 2021-3-9 16:55 | 显示全部楼层
不影响运行, 如果不想看到警告, 可以在调用函数时使用强制转换
回复

使用道具 举报

ID:367369 发表于 2021-3-9 17:41 | 显示全部楼层
qq1451740662 发表于 2021-3-9 16:40
那请问像这种情况应该如何在代码中修改啊,

根据需求
1:改函数定义和声明中参数的类型;
2:将传入的参数定义为同类类型;
3:调用时使用强制类型转换如:WriteA_Chinese( (const u8* )mode,x,y,p);
回复

使用道具 举报

ID:889492 发表于 2021-3-9 18:39 | 显示全部楼层
game灬boy 发表于 2021-3-9 17:41
根据需求
1:改函数定义和声明中参数的类型;
2:将传入的参数定义为同类类型;

强制类型转换的话,编译的时候警告更多了,有警告不影响程序运行吧,不影响的话就这样用了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表