So the ISO committee breaks the backward compatibility of C in behalf of modernity... but there is C++ guys!
A little effort and you could make C deprecated. ;-)
This makes me think that there are as many C++ gurus than Go(ogle) gurus who want to kill C to be the new Java which brings you a bad coffee from a dirty kitchen.
I am sorry to tell this but the C programming language doesn't need anymore
the ISO committee since it introduced non de facto standard features such
as VLA.
For reference I still use The C Programming Language by KERNIGHAN/RITCHIE
and The Standard C Library by PLAUGER.
In my view what programmers need the most is good practices rather than any
syntactic sugar.
I prefer C rather than any other programming language for its conciseness.
There is opportunities for any new programming language to replace C if it
is at least backward compatible with K&R C SE (aka ISO C90) and provides a
portable access to de facto standard hardware acceleration such as SIMD
instructions for vector computing.
For now we have to write in assembly language SIMD optimized libraries in
order to get the full calculation power of modern processors.
For programmers who expect C to bring them a hot drink, I would recommend
them to stick with the bloated C++ framework which sometimes enlarges your
p*s. :-P
You can spread components in as many object files or libraries as you wish.
IMHO it's not a C related problem but a code design one.
Write libraries (with headers) only if you need to share the code but if you're not sure about that just include it for your specific program.
There is no shame to include local files containing declarations and definitions.
I think it is a misconception from C programmers to write headers for local purpose.