为什么char类型作为数组下标会引发警告,这背后的原理是什么?

2026-04-02 12:321阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计390个文字,预计阅读时间需要2分钟。

为什么char类型作为数组下标会引发警告,这背后的原理是什么?

在`memcached.c`的第4810行出现错误:数组下标的类型应为`char`,但使用了`-Werrorchar-subscripts`选项。如果`ever[2]`的值不是`'1'`或`'2'`,则`ever[3]`不是数字。错误信息如下:

为什么char类型作为数组下标会引发警告,这背后的原理是什么?

错误:数组下标类型为'char',但使用了-Werrorchar-subscripts选项if((ever[2]||memcached.c:4810:13:错误:数组下标类型为'char',但使用了-Werror=char-subscripts选项ever[2]=='1'||ever[2]=='2')!isdigit(ever[3]))

memcached.c:4810:13:错误:数组下标类型为‘char’[-Werrorchar-subscripts]if((ever[2]1|| memcached.c:4810:13:错误:数组下标类型为‘char’[-Werror=char-subscripts] if((ever[2]=='1'||ever[2]=='2')&&!isdigit(ever[3])){ ^ 这ever是constchar*;但是ever[2]这个2怎么也不能是char类型啊?

5 个解决方案

#1

为何memcached源码会有编译错误。

#2

引用1楼qq120848369的回复: 为何memcached源码会有编译错误。 我也奇怪啊 是在cygwin下编译的 cygwinx86版本 安装方式是在windows的Users组成员下JustMe方式安装 然后就死活编译不过去后来看了下这个函数是想限定libevent的最低版本直接注释掉就可以编译过去了觉得gcc有点疯了

#3

这段代码没有错误,错误的代码你没有贴出来

#4

引用3楼p569354158的回复: 这段代码没有错误,错误的代码你没有贴出来 我也纳闷,但是这里注释掉就编译过了

#5

引用4楼wst_test的回复: Quote: 引用3楼p569354158的回复: 这段代码没有错误,错误的代码你没有贴出来 我也纳闷,但是这里注释掉就编译过了 估计是这句代码里面包含了某个看不见的特殊符号,还是把这段删掉之后自己手动敲一遍试试为妙

本文共计390个文字,预计阅读时间需要2分钟。

为什么char类型作为数组下标会引发警告,这背后的原理是什么?

在`memcached.c`的第4810行出现错误:数组下标的类型应为`char`,但使用了`-Werrorchar-subscripts`选项。如果`ever[2]`的值不是`'1'`或`'2'`,则`ever[3]`不是数字。错误信息如下:

为什么char类型作为数组下标会引发警告,这背后的原理是什么?

错误:数组下标类型为'char',但使用了-Werrorchar-subscripts选项if((ever[2]||memcached.c:4810:13:错误:数组下标类型为'char',但使用了-Werror=char-subscripts选项ever[2]=='1'||ever[2]=='2')!isdigit(ever[3]))

memcached.c:4810:13:错误:数组下标类型为‘char’[-Werrorchar-subscripts]if((ever[2]1|| memcached.c:4810:13:错误:数组下标类型为‘char’[-Werror=char-subscripts] if((ever[2]=='1'||ever[2]=='2')&&!isdigit(ever[3])){ ^ 这ever是constchar*;但是ever[2]这个2怎么也不能是char类型啊?

5 个解决方案

#1

为何memcached源码会有编译错误。

#2

引用1楼qq120848369的回复: 为何memcached源码会有编译错误。 我也奇怪啊 是在cygwin下编译的 cygwinx86版本 安装方式是在windows的Users组成员下JustMe方式安装 然后就死活编译不过去后来看了下这个函数是想限定libevent的最低版本直接注释掉就可以编译过去了觉得gcc有点疯了

#3

这段代码没有错误,错误的代码你没有贴出来

#4

引用3楼p569354158的回复: 这段代码没有错误,错误的代码你没有贴出来 我也纳闷,但是这里注释掉就编译过了

#5

引用4楼wst_test的回复: Quote: 引用3楼p569354158的回复: 这段代码没有错误,错误的代码你没有贴出来 我也纳闷,但是这里注释掉就编译过了 估计是这句代码里面包含了某个看不见的特殊符号,还是把这段删掉之后自己手动敲一遍试试为妙