On Wed, Jan 12, 2022 at 5:06 AM Jonathan Wakely <jwakely.gcc@xxxxxxxxx> wrote: > > On Wed, 12 Jan 2022 at 06:34, NightStrike via Gcc-help > <gcc-help@xxxxxxxxxxx> wrote: > > > > I recently hit this problem: > > > > #include <strings.h> > > void f() { > > index[0] = 0; > > } > > > > #gcc is 11.2.0 > > gcc -c a.c > > a.c:4:7: error: subscripted value is neither array nor pointer nor vector > > 4 | index[1] = 0; > > | ^ > > > > -Wshadow (or all or extra) did not highlight that "index" was actually > > a function from strings.h. For the future, is there anything I could > > have done to make gcc tell me what the real error was? > > g++ is *slightly* more help: > s.c:3:10: error: invalid types ‘<unresolved overloaded function > type>[int]’ for array subscript > > This at least gives you a hint it's a function, so probably declared > somewhere in a header. The C front end could do the same, saying > "subscripted value is a function", but it just has a generic > diagnostic for all un-subscriptable types. Asking for that to be > improved seems like a good use of a bugzilla PR. > > Maybe would make sense for us to also add a note telling you where > 'index' was declared, as long as it doesn't get suppressed without > -Wsystem-headers ! Added as https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103996 Thanks!