This is a smell. Your unit tests should not have to rely on internal implementation details.
And in the worst case you can have module-private headers. No need to pollute your interface.
They don't have to and shouldn't, but it's convenient. That's the parent's point ("to make writing unit tests less painful").
Are unit tests common in C? In the mid-2000's, I worked on an "enterprise" system, written in C and C++. There were about 300,000 lines of code, maybe 10 tests. This thing was the core of a billion dollar business
That's very broken; more usual practice at the time was to have large numbers of tests, aiming for good code coverage. I've sometimes seen too many full-tool tests and few true unit tests (tests that just test functions for correctness), but "maybe 10 tests" is frightening.
This particular company was very heavy on manual testing, unfortunately. (This was roughly 2003 - 2006 ish.)