@sjb @tedu
Pretty sure the C standard assumes that stdlib.h is part of "C implementation" - i.e. it's written by the same people who wrote the compiler, and can abuse the knowledge of how the compiler is implemented.
And more importantly,
in 6.3.2.3 footnote 57:
> The macro NULL is defined in <stddef.h> (and other headers) as a null pointer constant; see 7.21.