打印

这样赋值 nm[3]='退'; nm[4]='出'; 为什么会告警 Warning[Pe1422]:

[复制链接]
9448|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
关聿|  楼主 | 2012-5-31 11:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这样赋值  nm[3]='退';  nm[4]='出';
  为什么会告警 Warning[Pe1422]:




void xs_end(void) // 显示 退出, 由看门狗重新 启动
{ u16 nm[8];   
   
   LCD_CLR(); //清屏  
   nm[0]=0;  nm[1]=0;  nm[2]=0;  nm[3]='退';  nm[4]='出';  nm[5]=0;  nm[6]=0;  nm[7]=0;
   xs_1p_hz(9, 0, nm);   
   while(1)
     {;}
}


Warning[Pe1422]: multicharacter character literal (potential portability problem) F:\C_ARM\无线测温\控制器(RS485接收)\实验\project\LCD\LCD_xs_function3.C 18
沙发
关聿|  楼主 | 2012-5-31 11:46 | 只看该作者
补充,我用的是IAR550

使用特权

评论回复
板凳
IJK| | 2012-5-31 11:56 | 只看该作者
'退'这样的写法当然不对。
中文不是英文,英文1个字符用1个字节编码,而中文1个字符用2个字节编码。

使用特权

评论回复
地板
lllaaa| | 2012-5-31 12:52 | 只看该作者
''只能用来括一个字节

使用特权

评论回复
5
sjnh| | 2012-5-31 13:11 | 只看该作者
退,是字符串,只能用双引号“退”;不是U16值

使用特权

评论回复
6
关聿|  楼主 | 2012-5-31 13:28 | 只看该作者
用IAR442编译没有警告。IAR550有警告。虽然有警告,但能正常使用的。

使用特权

评论回复
7
关聿|  楼主 | 2012-5-31 13:40 | 只看该作者
本来 '退', 就是想用 这个汉字的机内码

使用特权

评论回复
8
IJK| | 2012-5-31 14:59 | 只看该作者
用IAR442编译没有警告,说明它的检查比较弱。IAR550有警告,说明它的检查有进步。

'退', 就是想用 这个汉字的机内码,编译器怎么知道应该取高字节还是低字节?

使用特权

评论回复
9
关聿|  楼主 | 2012-6-1 09:24 | 只看该作者
机内码是unsigned int 型数据, 我取的就是unsigned int 型数据, 不是字节,所以没有 取高字节还是低字节的问题。
void xs_end(void) // 显示 退出, 由看门狗重新 启动
{ u16 nm[8];   
   
   LCD_CLR(); //清屏  
   nm[0]=0;  nm[1]=0;  nm[2]=0;  nm[3]='退';  nm[4]='出';  nm[5]=0;  nm[6]=0;  nm[7]=0;
   xs_1p_hz(9, 0, nm);   
   while(1)
     {;}
}

使用特权

评论回复
10
sjdcz| | 2012-8-6 00:26 | 只看该作者
这样可以用 unsigned char Temp[]={"当前时间"};

使用特权

评论回复
11
cao_linda| | 2014-1-8 09:21 | 只看该作者
你好,我出现这个问题,你的解决了吗

使用特权

评论回复
12
ARMdownload| | 2016-1-20 17:39 | 只看该作者
本帖最后由 ARMdownload 于 2016-1-20 17:41 编辑

我有一个办法就是不用编译器去转换汉字内码了,直接手填汉字内码gbk gb2312  
例如‘址’  就是0xd6b7

之所以这么提示的原因估计是当前编译器支持汉字内码编码可以到别的平台的编译器就不支持汉字内码编码了,防止出错,所以给出如此提示

使用特权

评论回复
13
jar1866| | 2016-1-20 21:35 | 只看该作者
你觉得PE1422警告对你无意义,可以取消这个警告

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

46

帖子

0

粉丝