[PIC®/AVR®/dsPIC®产品] 汉字内码索引一直出警告!

[复制链接]
1329|25
 楼主| jiahy 发表于 2022-12-8 20:23 | 显示全部楼层 |阅读模式
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];    就会消失,怎么消除第一条警告
 楼主| jiahy 发表于 2022-12-8 20:25 | 显示全部楼层
开发环境用的MPLABX  V5.15,不更换版本,编译器用的XC8 V1.41
dengdc 发表于 2022-12-8 20:27 | 显示全部楼层
GB_16x16[] 这个里面有个X,感觉不稳
stly 发表于 2022-12-8 20:32 | 显示全部楼层
另外还插入了中文字符?
heweibig 发表于 2022-12-8 20:34 | 显示全部楼层
为什么不统一用数字
dingy 发表于 2022-12-8 20:40 | 显示全部楼层
“”表示字符串,有个结束0x00所以,“差”实际上是三个字节。
扩展资料:

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

在程序中往往依靠检测′\0′的位置来判定字符串是否结束,而不是根据数组的长度来决定字符串长度。当然,在定义字符数组时应估计实际字符串长度,保证数组长度始终大于字符串实际长度。如果在一个字符数组中先后存放多个不同长度的字符串,则应使数组长度大于最长的字符串的长度
supernan 发表于 2022-12-8 20:42 | 显示全部楼层
228警告的意思是“该字符在C 代码中是非法的。有效字符包括字母、数字和构成可接受操作符的字符",”差“内码0xB2 0xEE,mplab应该只支持ASCII字符吧。
stly 发表于 2022-12-8 20:46 | 显示全部楼层
我在新版本的xc8里没有这个警告,  试试看添加这个#pragma jis
heweibig 发表于 2022-12-8 20:47 | 显示全部楼层
这不是很好的方法,还不如放着警告不管
lizye 发表于 2022-12-8 20:49 | 显示全部楼层
或者找到中文的编码缩写,尝试替换jis为中文编码缩写
happy_10 发表于 2022-12-8 20:52 | 显示全部楼层
禁止这个警告就可以了
zwll 发表于 2022-12-8 20:54 | 显示全部楼层
这一定有很严重的原因。
supernan 发表于 2022-12-8 20:55 | 显示全部楼层
#pragma jis是什么意思?
wyjie 发表于 2022-12-8 20:57 | 显示全部楼层
你用的那个版本的XC8呢
chenho 发表于 2022-12-8 20:59 | 显示全部楼层
代码里面直接放"差"这样的字符不是好习惯,建议改掉。
dingy 发表于 2022-12-8 21:01 | 显示全部楼层
原因是代码文件可以是各种编码,这个编码会依赖于系统和编辑软件而可能变化。
jiajs 发表于 2022-12-8 21:02 | 显示全部楼层
这样的话很可能下次换个系统后这个代码就不能成功编译。
liuzaiy 发表于 2022-12-8 21:04 | 显示全部楼层
你可以查一下GB2312,GBK,Unicode这些编码形式。
LOVEEVER 发表于 2022-12-24 16:14 | 显示全部楼层
为啥有个差字,不是统一的数字编写
jf101 发表于 2022-12-24 16:20 | 显示全部楼层
dingy 发表于 2022-12-8 20:40
“”表示字符串,有个结束0x00所以,“差”实际上是三个字节。
扩展资料:

感觉是差字的问题,对于字符数的问题很好理解
您需要登录后才可以回帖 登录 | 注册

本版积分规则

862

主题

9861

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部