GCC by itself attempts to provide the compiler part of a conforming implementation, but only a limited subset of the library part of such an implementation. See Language Standards Supported by GCC, for details of what this means. Beyond the limited library facilities described there, the rest of the C library is supplied by the vendor of the operating system. If that C library doesn’t conform to the C standards, then your programs might get warnings (especially when using -Wall) that you don’t expect.
For example, the sprintf
function on SunOS 4.1.3 returns
char *
while the C standard says that sprintf
returns an
int
. The fixincludes
program could make the prototype for
this function match the Standard, but that would be wrong, since the
function will still return char *
.
If you need a Standard compliant library, then you need to find one, as
GCC does not provide one. The GNU C library (called glibc
)
provides ISO C, POSIX, BSD, SystemV and X/Open compatibility for
GNU/Linux and HURD-based GNU systems; no recent version of it supports
other systems, though some very old versions did. Version 2.2 of the
GNU C library includes nearly complete C99 support. You could also ask
your operating system vendor if newer libraries are available.