(Or maybe it's just a problem specific to C++ projects and IDEs. The largest codebases I worked with, the ones where I hit this problem, were C++ ones.)
I think you're also right that some languages make this harder for IDEs than others. C++ is probably a worst case. Something like Java is trivial because the file structure matches the namespaces. It's probably not a coincidence that every Java IDE I've used has absolutely top class code intelligence tools.
C is probably not as good as Java but I remember using Eclipse the first time with C for operating systems class, and being amazed with what a large codebase looks like and how easy it was to maneuver.
Having said that, VSCode these days are also pretty damn good.
Grep helps you search for things in comments and in documentation. It allows you to conveniently ignore files and directories.
Grep and related tooling contain decades worth of insight and wisdom (in a decades-old field) that we should not be so quick to dismiss.