To elaborate, I do find misuse of casts to be a reliable shibboleth to determine competence in C and C++. If a programmer writes lots of pointer casts that don't make sense, that's usually reliable a signal that the programmer doesn't really understand the warnings from their compiler and is just trying to shut up the warnings (real or perceived) rather than fix actual problems. This approximation has played out well in my experience.
It's not meant to be judgmental, I too made the same mistakes when I was learning C. I remember in 2000 or so I made the "cast memcpy args to void pointer" mistake because the manpage said void pointer and I didn't know what that was yet. If nobody ever pointed that out to me, maybe I'd still be doing it today. This kind of "pedantry" you're accusing me of is how a lot of people get better.
By the way, the most popular compilers most people use today (llvm, gcc, MSVC) don't do what you're describing when the file ends in .c which it does here.