标题: 使用keil编译过程中出现编号同为167-D的警告,请问如何解决,新手小白,求带,谢谢 [打印本页]

作者: qq1451740662    时间: 2021-3-9 15:58
标题: 使用keil编译过程中出现编号同为167-D的警告,请问如何解决,新手小白,求带,谢谢
使用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 (25.2 KB, 下载次数: 139)

1615276578(1).png

作者: devcang    时间: 2021-3-9 16:25
函数的最后的参数
const char *

修改成
const unsigned char *
或 const  u8 *
作者: game灬boy    时间: 2021-3-9 16:34
你的参数类型有差别, u8的类型是unsigned char    与char类型不一致
const修饰的变量表示其值不能被改变
作者: qq1451740662    时间: 2021-3-9 16:38
devcang 发表于 2021-3-9 16:25
函数的最后的参数
const char *

您说的是第一个警告的问题吧,是要把352行改成这样下面这样吗
WriteA_Chinese(const u8* mode,x,y,p);
编译之后并没有解决问题,还出现了一个错误
作者: qq1451740662    时间: 2021-3-9 16:40
game灬boy 发表于 2021-3-9 16:34
你的参数类型有差别, u8的类型是unsigned char    与char类型不一致
const修饰的变量表示其值不能被改变

那请问像这种情况应该如何在代码中修改啊,
作者: 77599585    时间: 2021-3-9 16:55
不影响运行, 如果不想看到警告, 可以在调用函数时使用强制转换
作者: game灬boy    时间: 2021-3-9 17:41
qq1451740662 发表于 2021-3-9 16:40
那请问像这种情况应该如何在代码中修改啊,

根据需求
1:改函数定义和声明中参数的类型;
2:将传入的参数定义为同类类型;
3:调用时使用强制类型转换如:WriteA_Chinese( (const u8* )mode,x,y,p);
作者: qq1451740662    时间: 2021-3-9 18:39
game灬boy 发表于 2021-3-9 17:41
根据需求
1:改函数定义和声明中参数的类型;
2:将传入的参数定义为同类类型;

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




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1