Since the c99 utility usually creates files in the current
directory during the compilation process, it is typically
necessary to run the c99 utility in a directory in which a file
can be created.
On systems providing POSIX Conformance (see the Base Definitions
volume of POSIX.1‐2017, Chapter 2, Conformance), c99 is required
only with the C-Language Development option; XSI-conformant
systems always provide c99.
Some historical implementations have created .o
files when -c
is
not specified and more than one source file is given. Since this
area is left unspecified, the application cannot rely on .o
files
being created, but it also must be prepared for any related .o
files that already exist being deleted at the completion of the
link edit.
There is the possible implication that if a user supplies
versions of the standard functions (before they would be
encountered by an implicit -l c
or explicit -l m
), that those
versions would be used in place of the standard versions. There
are various reasons this might not be true (functions defined as
macros, manipulations for clean name space, and so on), so the
existence of files named in the same manner as the standard
libraries within the -L
directories is explicitly stated to
produce unspecified behavior.
All of the functions specified in the System Interfaces volume of
POSIX.1‐2017 may be made visible by implementations when the
Standard C Library is searched. Conforming applications must
explicitly request searching the other standard libraries when
functions made visible by those libraries are used.
In the ISO C standard the mapping from physical source characters
to the C source character set is implementation-defined.
Implementations may strip white-space characters before the
terminating <newline> of a (physical) line as part of this
mapping and, as a consequence of this, one or more white-space
characters (and no other characters) between a <backslash>
character and the <newline> character that terminates the line
produces implementation-defined results. Portable applications
should not use such constructs.
Some c99 compilers not conforming to POSIX.1‐2008 do not support
trigraphs by default.