> a) Delete nonsense about "not polluting the namespace with stddef.h > symbols" since string.h includes stddef.h a little later anyway.
If you are talking specifically about the glibc implementation's string.h, then you are confused. glibc's string.h complies with the C and POSIX standards, and so does not pollute the namespace with all of stddef.h's names. It only defines size_t and NULL via stddef.h. If you also want ptrdiff_t for use in obstack.h, with GCC's stddef.h you can do: #define __need_ptrdiff_t #include <stddef.h> That said, I don't think anybody actually cares about a GNU extension header like obstack.h implicitly defining common standard C symbols like that ones that stddef.h defines.