A C compiler understands C as well as any automated tool can. But you're right that this isn't the same as understanding C. That's why I've written Futhark in such a way that it's very easy to supply your own type definitions to override the automatic one.
As I write in the README a wrapper will always be better. But an automatic wrapper is better than no wrapper, or worse an outdated incorrect wrapper. I've multiple times had to edit a wrapper because it was missing parts (the official OpenSSL ones) or wraps something incorrectly (the clang library I used to write Futhark).