打印
[PIC®/AVR®/dsPIC®产品]

汉字内码索引一直出警告!

[复制链接]
663|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 | 只看该作者
另外还插入了中文字符?

使用特权

评论回复
5
heweibig| | 2022-12-8 20:34 | 只看该作者
为什么不统一用数字

使用特权

评论回复
6
dingy| | 2022-12-8 20:40 | 只看该作者
“”表示字符串,有个结束0x00所以,“差”实际上是三个字节。
扩展资料:

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

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

使用特权

评论回复
7
supernan| | 2022-12-8 20:42 | 只看该作者
228警告的意思是“该字符在C 代码中是非法的。有效字符包括字母、数字和构成可接受操作符的字符",”差“内码0xB2 0xEE,mplab应该只支持ASCII字符吧。

使用特权

评论回复
8
stly| | 2022-12-8 20:46 | 只看该作者
我在新版本的xc8里没有这个警告,  试试看添加这个#pragma jis

使用特权

评论回复
9
heweibig| | 2022-12-8 20:47 | 只看该作者
这不是很好的方法,还不如放着警告不管

使用特权

评论回复
10
lizye| | 2022-12-8 20:49 | 只看该作者
或者找到中文的编码缩写,尝试替换jis为中文编码缩写

使用特权

评论回复
11
happy_10| | 2022-12-8 20:52 | 只看该作者
禁止这个警告就可以了

使用特权

评论回复
12
zwll| | 2022-12-8 20:54 | 只看该作者
这一定有很严重的原因。

使用特权

评论回复
13
supernan| | 2022-12-8 20:55 | 只看该作者
#pragma jis是什么意思?

使用特权

评论回复
14
wyjie| | 2022-12-8 20:57 | 只看该作者
你用的那个版本的XC8呢

使用特权

评论回复
15
chenho| | 2022-12-8 20:59 | 只看该作者
代码里面直接放"差"这样的字符不是好习惯,建议改掉。

使用特权

评论回复
16
dingy| | 2022-12-8 21:01 | 只看该作者
原因是代码文件可以是各种编码,这个编码会依赖于系统和编辑软件而可能变化。

使用特权

评论回复
17
jiajs| | 2022-12-8 21:02 | 只看该作者
这样的话很可能下次换个系统后这个代码就不能成功编译。

使用特权

评论回复
18
liuzaiy| | 2022-12-8 21:04 | 只看该作者
你可以查一下GB2312,GBK,Unicode这些编码形式。

使用特权

评论回复
19
LOVEEVER| | 2022-12-24 16:14 | 只看该作者
为啥有个差字,不是统一的数字编写

使用特权

评论回复
20
jf101| | 2022-12-24 16:20 | 只看该作者
dingy 发表于 2022-12-8 20:40
“”表示字符串,有个结束0x00所以,“差”实际上是三个字节。
扩展资料:

感觉是差字的问题,对于字符数的问题很好理解

使用特权

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

本版积分规则

862

主题

9861

帖子

4

粉丝