打印

[8/16位单片机] 汉字内码索引一直出警告!

[复制链接]
234|13
跳转到指定楼层
楼主
 楼主 | 2019-10-31 11:26 | 只看该作者 |退出气泡模式 回帖奖励 |倒序浏览 |阅读模式
typedef struct _GB16                 // 汉字字模数据结构
{
       uchar Index[2];               // 汉字内码索引
       uchar Msk[32];                       // 点阵码数据
}GB16_Typedef;
const GB16_Typedef  GB_16x16[] =          // 数据表
{
"差",0x00,0x04,0x24,0x24,0x25,0x26,0xA4,0x7C,0x24,0x26,0x25,0x34,0x26,0x84,0x00,0x00,
      0x41,0x21,0x11,0x89,0x85,0x8B,0x89,0x89,0xF9,0x89,0x8D,0x89,0xC1,0x81,0x01,0x00,
}

用XC8编译时提示
warning: (228) illegal character (0xB2)
warning: (340) string not terminated by null character
第二条警告,将   uchar Index[2];    改为   uchar Index[3];    就会消失,怎么消除第一条警告?强迫症,非要把警告消除。   
沙发
 楼主 | 2019-10-31 11:27 | 只看该作者
开发环境用的MPLABX  V5.15,不更换版本,编译器用的XC8 V1.41
板凳
| 2019-10-31 11:51 | 只看该作者
本帖最后由 lcczg 于 2019-10-31 11:57 编辑

GB_16x16[] 这个里面有个X,感觉不稳。另外还插入了中文字符?为什么不统一用数字

评论

xinting 2019-10-31 17:58 回复TA
开始用数字,太麻烦,直接汉字索引观 
地板
| 2019-10-31 15:05 | 只看该作者
本帖最后由 l4157 于 2019-10-31 15:08 编辑

“”表示字符串,有个结束0x00所以,“差”实际上是三个字节。

扩展资料:

对一个字符串常量,系统会自动在所有字符的后面加一个′\0′作为结束符。例如字符串″I am happy″共有10个字符,但在内存中它共占11个字节,最后一个字节′\0′是由系统自动加上的。

在程序中往往依靠检测′\0′的位置来判定字符串是否结束,而不是根据数组的长度来决定字符串长度。当然,在定义字符数组时应估计实际字符串长度,保证数组长度始终大于字符串实际长度。如果在一个字符数组中先后存放多个不同长度的字符串,则应使数组长度大于最长的字符串的长度



评论

l4157 2019-11-1 11:03 回复TA
@xinting 让字模软件直接生成两个字节的GBP312内码,还可以节省一个字节的RAM 
xinting 2019-10-31 17:59 回复TA
嗯,这个我知道了,第一条警告依然存在 
5
| 2019-11-1 13:50 | 只看该作者
228警告的意思是“该字符在C 代码中是非法的。有效字符包括字母、数字和构成可接受操作符的字符",”差“内码0xB2 0xEE,mplab应该只支持ASCII字符吧。

评论

xinting 2019-11-7 13:26 回复TA
这个很有可能,也就是MPLABX本身不支持汉字内码索引啦 
6
| 2019-11-1 15:01 | 只看该作者
我在新版本的xc8里没有这个警告,  试试看添加这个#pragma jis

这不是很好的方法,还不如放着警告不管,或者找到中文的编码缩写,尝试替换jis为中文编码缩写
7
| 2019-11-5 14:20 | 只看该作者
禁止这个警告就可以了

评论

ayb_ice 2019-11-8 12:01 回复TA
@xinting :取决于具体编译器,百度吧 
xinting 2019-11-7 13:27 回复TA
怎么禁止呢 
8
| 2019-11-7 00:05 | 只看该作者
这一定有很严重的原因。
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表
PK10牛牛 三分PK拾平台 幸运飞艇官网 极速快乐十分 欢乐生肖 极速快乐十分 极速快3 三分时时彩 澳洲幸运8 幸运赛车