On Wed, Nov 19, 2014, at 16:44, k...@shike2.com wrote: > > C90, or any version of standard C, does not have a concept of "system > > headers", other than giving implementations permission to place their > > own implementation-defined files in places searched by #include > > <h-char-sequence>. > > At this point I was talking about POSIX of course. C90 doesn't give > implementations permission to place their own implementation-defined. > If your program relays on that, and include some ot these > implementation headers, then your program is not C90 compliant, > and the behaviour is undefined (from C90 point of view, not from > POSIX point of view).
Er, by "permission" I meant it doesn't make the _implementation_ non-compliant. And implementation-defined is not the same as undefined. > - Each header declares and defines only those > identifiers listed in its associated section: If the header includes > another header then it will break this rule. I think this is meant as a statement that strictly conforming programs may not rely on them defining anything else. Most of these identifiers are reserved, and a strictly conforming program therefore cannot do anything with them without including the header they are documented as being defined in.