A translation unit may include library headers in any order ([lex]).
Each may be included more than once, with no effect different from
being included exactly once, except that the effect of including either
depends each time on the lexically
current definition of
A translation unit shall include a header only outside of any
declaration or definition, and shall include the header lexically
before the first reference in that translation unit to any of the entities
declared in that header.
The only reliable way to declare an object or
function signature from the C standard library is by including the header that
declares it, notwithstanding the latitude granted in 7.1.4 of the C