C 类型匹配错误-为什么?
我从gcc得到以下警告:C 类型匹配错误-为什么?,c,gcc,gdb,C,Gcc,Gdb,我从gcc得到以下警告: labs.c:760:2: error: array subscript has type ‘char’ [-Werror=char-subscripts] wrbuf[cmdlen++]=(unsigned char)(basictoken[from]>>8); ^ cc1: all warnings being treated as errors 使用gdb进行调试时,它会报告相似类型的两侧: 760 wrbuf[cmdlen++]=(unsi
labs.c:760:2: error: array subscript has type ‘char’ [-Werror=char-subscripts]
wrbuf[cmdlen++]=(unsigned char)(basictoken[from]>>8);
^
cc1: all warnings being treated as errors
使用gdb进行调试时,它会报告相似类型的两侧:
760 wrbuf[cmdlen++]=(unsigned char)(token[from]>>8);
(gdb) whatis wrbuf[cmdlen]
type = unsigned char
(gdb) whatis (unsigned char)(token[from]>>8)
type = unsigned char
为什么会有这样的警告?
这让我感到不安,因为如果我想为ctypes提供可用的格式,警告就会变成错误
error: array subscript has type ‘char'
它告诉您有关数组下标、cmdlen
或来自的
如何定义cmdlen
和from
?其中一个是字符吗?我怀疑是这样的…cmdle是char,from是intwell,将cmdlen更改为int解决了这个问题。然而,我有点惊讶,为什么必须对几个字节长的数组使用整数:(无论如何,谢谢你的帮助。是的,我同意。向StackOverflow询问背后的rational是个好问题。可能是因为在某些情况下,编译器不知道数组的大小,而使用字符作为索引是有问题的,因为它的范围。但是,我不知道……让我们看看他们怎么说。。。