OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 26327|回复: 22

passing 'char[16]' to parameter of type 'const u8*' 编译出现的问题

[复制链接]

8

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2013-11-9
在线时间
0 小时
发表于 2013-11-14 00:57:29 | 显示全部楼层 |阅读模式
passing 'char[16]' to parameter of type 'const u8*' (aka 'const unsigned char*') converts between pointers to interger types with different signs
我用的是mdk4.70a,编译的时候没报错,但是lcd不能显示字符,为什么呢?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

20

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
147
金钱
147
注册时间
2012-8-24
在线时间
3 小时
发表于 2014-8-20 08:22:12 | 显示全部楼层
你不能用  u8  声明函数  应该用char
回复 支持 1 反对 0

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-11-14 11:17:34 | 显示全部楼层
貌似是参数有问题。
估计是你不会用函数...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 0 反对 1

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2013-10-2
在线时间
0 小时
发表于 2013-11-18 21:32:08 | 显示全部楼层
我也有 同样 的问题,貌似是定义函数时,定义了unsigned char型,调用函数时,传递的参数是char型的字符串。不过我的 只有警告,执行没问题
回复 支持 反对

使用道具 举报

9

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2014-6-3
在线时间
2 小时
发表于 2014-6-4 10:16:48 | 显示全部楼层
我现在也出现同样的问题,不知道楼主是怎么解决这个问题的?
回复 支持 反对

使用道具 举报

4

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2015-5-3
在线时间
0 小时
发表于 2015-5-8 15:47:54 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------能指点下吗
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-5-8 23:28:16 | 显示全部楼层
回复【6楼】求知:
---------------------------------
得看代码。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

22

主题

120

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
252
金钱
252
注册时间
2015-7-25
在线时间
20 小时
发表于 2015-8-10 16:36:26 | 显示全部楼层
我现在驱动lcd1602也遇到了这个问题,可以显示数字但是不能显示字符。
回复 支持 反对

使用道具 举报

22

主题

120

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
252
金钱
252
注册时间
2015-7-25
在线时间
20 小时
发表于 2015-8-10 16:42:22 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
void Lcd_display(uchar addr,uchar *str)

uchar i=0;
while(Busy_Check());
Lcd_write_cmd(addr|0x80);
delay_ms(1);
for(i=0;str!='\0';i++)
{
Lcd_write_data(str);
delay_ms(1);
}
}


int main(void)
{
delay_init();
GPIObc_Init();
Lcd_initialize();
Lcd_display(0,"speed");
while(1);
}

两个关键函数
在main函数 Lcd_display的地方
warning:passing char【6】 to parameter of type ’unsigned char*‘  converts between pointers to interger types with different signs

编译一点问题都没有但是代码旁边黄色三角一直都在,而且lcd1602也显示不了字符

一模一样的程序51上能显示,stm32上就显示不了
我寻思着是不是只能用编码来显示字符了
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-8-10 22:16:34 | 显示全部楼层
回复【9楼】秋夜月汐:
---------------------------------
加强制转换吧。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

14

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
163
金钱
163
注册时间
2015-8-5
在线时间
9 小时
发表于 2015-8-16 17:33:03 | 显示全部楼层
楼主问题解决了吗?我也是这个问题
回复 支持 反对

使用道具 举报

22

主题

120

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
252
金钱
252
注册时间
2015-7-25
在线时间
20 小时
发表于 2015-8-16 18:34:45 | 显示全部楼层
回复【11楼】霸王表急:
---------------------------------
定义输入lcd1602的字符串变量一定要是 char  不能是unsigned char!!!!

摸索了好久终于解决了

你肯定是看着51的例程写的
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2015-6-25
在线时间
23 小时
发表于 2015-11-11 12:00:50 | 显示全部楼层
之前使用MDK5.10的时候例程可以显示汉字,换成MDK5.16后和楼主遇到相同的问题,而且屏幕不显示输出的文字
回复 支持 反对

使用道具 举报

18

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
377
金钱
377
注册时间
2013-3-1
在线时间
50 小时
发表于 2015-11-30 23:10:39 | 显示全部楼层
Lcd_display(0,"speed"); 

出现这个警告的原因是你定义的函数参数是 uchar
但是你引用的时候却用了 "speed"   ,“” 引住的内容是   字符串  ,字符串是  char型

所以只需要将函数参数改为 char 就可以了
回复 支持 反对

使用道具 举报

3

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
138
金钱
138
注册时间
2013-12-6
在线时间
24 小时
发表于 2015-12-21 15:06:17 | 显示全部楼层
我也遇到了同样的问题,代码和原子哥的相同,但放到自己的工程里就出这个错误!
回复 支持 反对

使用道具 举报

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2016-7-19
在线时间
23 小时
发表于 2016-8-4 11:18:48 | 显示全部楼层
C:\Users\Administrator\Desktop
回复 支持 反对

使用道具 举报

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2016-7-19
在线时间
23 小时
发表于 2016-8-4 11:19:42 | 显示全部楼层
我的oled是这样,怎么弄啊,oled点不亮
oled.png
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2012-10-18
在线时间
9 小时
发表于 2016-8-18 17:26:53 | 显示全部楼层
本帖最后由 guanyunc 于 2016-8-18 17:29 编辑
正点原子 发表于 2013-11-14 11:17
貌似是参数有问题。
估计是你不会用函数...


跑了一个freertos  , xTaskCreate是OS的,MDK是5.14
函数定义: xTaskCreate( pdTASK_CODE pxTaskCode, const signed char * const pcName, unsigned short usStackDepth.........)
函数调用: xTaskCreate(ToggleOSLed, "ToggleOSLed", configMINIMAL_STACK_SIZE, NULL, LED_TASK_PRIO, NULL);
警告 :warning: passing ’char[12]‘ to parameter of type 'const char *' converts between pointers to integer types with different sign
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2012-10-18
在线时间
9 小时
发表于 2016-8-18 17:27:30 | 显示全部楼层
正点原子 发表于 2015-5-8 23:28
回复【6楼】求知:
---------------------------------
得看代码。

函数定义:xTaskCreate( pdTASK_CODE pxTaskCode, const signed char * const pcName, unsigned short usStackDepth.........)
函数调用: xTaskCreate(ToggleOSLed, "ToggleOSLed", configMINIMAL_STACK_SIZE, NULL, LED_TASK_PRIO, NULL);
警告 :warning: passing ’char[12]‘ to parameter of type 'const char *' converts between pointers to integer types with different sign
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2018-9-27
在线时间
8 小时
发表于 2018-10-14 15:30:32 | 显示全部楼层
正点原子 发表于 2013-11-14 11:17
貌似是参数有问题。
估计是你不会用函数...

你自己写的源代码就有这个警告
回复 支持 反对

使用道具 举报

29

主题

338

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1181
金钱
1181
注册时间
2018-4-13
在线时间
170 小时
发表于 2018-10-14 21:09:25 | 显示全部楼层
这个是说字符串和uchar*类型不匹配。一般字符串在c中是char类型的数组,而uchar和char是不一样的,一个有sign一个是unsigned。这个在很多时候只是个警告,不影响编译,系统会自动转换的。如果需要可以改为char*类型做参数,一般也没影响。IDE有设置char类型是默认有符号char还是无符号char的选项,我一般都设为默认无符号char.
回复 支持 反对

使用道具 举报

29

主题

338

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1181
金钱
1181
注册时间
2018-4-13
在线时间
170 小时
发表于 2018-10-14 21:10:40 | 显示全部楼层
这个是说字符串和uchar*类型不匹配。一般字符串在c中是char类型的数组,而uchar和char是不一样的,一个有sign一个是unsigned。这个在很多时候只是个警告,不影响编译,系统会自动转换的。如果需要可以改为char*类型做参数,一般也没影响。IDE有设置char类型是默认有符号char还是无符号char的选项,我一般都设为默认无符号char.
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2019-11-24
在线时间
5 小时
发表于 2019-12-10 10:54:37 | 显示全部楼层
正点原子 发表于 2013-11-14 11:17
貌似是参数有问题。
估计是你不会用函数...

原子哥,你自己的源代码就有这个警告,option for target的C/C++页面删掉STM32F10X_LD就没这个警告了
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-22 05:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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