> system headers should come first, then a newline, then libc headers > then a newline then local headers.
I usually do just the inverse, first libc headers and later system headers. > the libc headers are guaranteed to work regardless of the order of > inclusion but need to come after the system headers. From what I Are you sure about that?. I know that C90 guarantees that any standard header will not include any other standard header (althought it is sad that a lot of compilers ignore this rule), but I have never read anything about dependences between standard and system headers.