【问题标题】:type matching error - why? [duplicate]类型匹配错误 - 为什么? [复制]
【发布时间】:2013-11-11 00:54:22
【问题描述】:

我从 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++]=(unsigned char)(token[from]>>8);
(gdb) whatis wrbuf[cmdlen]
type = unsigned char
(gdb) whatis (unsigned char)(token[from]>>8)
type = unsigned char

为什么会出现这个警告? 这让我很不安,因为如果我想为 ctypes 提供可用格式,警告就会变成错误。

【问题讨论】:

    标签: c gcc gdb


    【解决方案1】:
    error: array subscript has type ‘char'
    

    它告诉你关于数组下标cmdlenfrom

    cmdlenfrom 是如何定义的?其中一个是char吗?我怀疑是...

    【讨论】:

    • cmdle 是 char,from 是 int
    • 好吧,将 cmdlen 更改为 int 可以解决问题。但是我有点惊讶为什么必须对几个字节长的数组使用整数。 :( 无论如何,感谢您的帮助。
    • 是的,我同意。向 StackOverflow 询问其背后的原因将是一个很好的问题。也许是因为在某些情况下编译器不知道数组的大小,并且使用 char 作为索引是有问题的,因为它的范围。但是,我不知道...
    • 让我们看看他们怎么说...stackoverflow.com/questions/19897968/…
    猜你喜欢
    • 1970-01-01
    • 2017-01-04
    • 2021-06-12
    • 2016-11-23
    • 1970-01-01
    • 2022-06-29
    • 1970-01-01
    • 2022-11-01
    • 2016-08-27
    相关资源
    最近更新 更多