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 !