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?