Compare with later versions:
C89 defines 15 standard headers and specifies 323 names.
This is the original ANSI standard ratified in 1989.
A program can determine that it is running in an
environment conforming at least to C89 by the
presence of __STDC__
with the value
1
. It can further determine that it
does not conform to any later version by detecting the
absence of __STDC_
.
This standard is technically identical to C90.
Headers defined in C89
Names specified in C89
#
##
#define
#elif
#else
#endif
#error
#if
#ifdef
#ifndef
#include
#line
#pragma
#undef
__DATE__
__FILE__
__LINE__
__STDC__
__TIME__
_IOFBF
_IOLBF
_IONBF
abort
abs
acos
acosh
asctime
asin
asinh
assert
atan
atan2
atanh
atexit
atof
atoi
atol
auto
BUFSIZ
break
break
break
bsearch
CHAR_
BIT CHAR_
MAX CHAR_
MIN CLOCKS_
PER_ SEC calloc
case
ceil
char
char
clearerr
clock
clock_t
const
continue
cos
cosh
ctime
DBL_
DECIMAL_ DIG DBL_
DIG DBL_
EPSILON DBL_
MANT_ DIG DBL_
MAX DBL_
MAX_ 10_ EXP DBL_
MAX_ EXP DBL_
MIN DBL_
MIN_ 10_ EXP DBL_
MIN_ EXP DECIMAL_
DIG default
default
defined
difftime
div
div_t
do
double
double
EDOM
EOF
ERANGE
EXIT_
FAILURE EXIT_
SUCCESS else
enum
errno
exit
exp
extern
FILE *
FILENAME_
MAX FLT_
DECIMAL_ DIG FLT_
DIG FLT_
EPSILON FLT_
MANT_ DIG FLT_
MAX FLT_
MAX_ 10_ EXP FLT_
MAX_ EXP FLT_
MIN FLT_
MIN_ 10_ EXP FLT_
MIN_ EXP FLT_
RADIX FLT_
ROUNDS FOPEN_
MAX fabs
fclose
feof
ferror
fflush
fgetc
fgetpos
fgets
float
float
floor
fmod
fopen
for
fpos_t
fprintf
fputc
fputs
fread
free
freopen
frexp
fscanf
fseek
fsetpos
ftell
fwrite
getc
getchar
getenv
gets
gmtime
goto
HUGE_
VAL INT_
MAX INT_
MIN if
int
int
isalnum
isalpha
iscntrl
isdigit
isgraph
islower
isprint
ispunct
isspace
isupper
isxdigit
jmp_
buf L_
tmpnam LC_
ALL LC_
COLLATE LC_
CTYPE LC_
MONETARY LC_
NUMERIC LC_
TIME LDBL_
DECIMAL_ DIG LDBL_
DIG LDBL_
EPSILON LDBL_
MANT_ DIG LDBL_
MAX LDBL_
MAX_ 10_ EXP LDBL_
MAX_ EXP LDBL_
MIN LDBL_
MIN_ 10_ EXP LDBL_
MIN_ EXP LONG_
MAX LONG_
MIN labs
ldexp
localeconv
localtime
log
long
long
long double
longjmp
MB_
CUR_ MAX MB_
LEN_ MAX main
malloc
mblen
mbstowcs
mbtowc
memchr
memcmp
memcpy
memmove
memset
mktime
modf
NDEBUG
NULL
offsetof
perror
pow
printf
ptrdiff_t
putc
putchar
puts
qsort
RAND_
MAX raise
rand
realloc
register
remove
rename
return
rewind
SCHAR_
MAX SCHAR_
MIN SEEK_
CUR SEEK_
END SEEK_
SET SHRT_
MAX SHRT_
MIN SIG_
DFL SIG_
ERR SIG_
IGN SIGABRT
SIGFPE
SIGILL
SIGINT
SIGSEGV
SIGTERM
scanf
setbuf
setjmp
setlocale
setvbuf
short
short
sig_
atomic_t signal
signed
signed char
sin
sinh
size_t
sizeof
sprintf
sqrt
srand
sscanf
static
static
static
static
stderr
stdin
stdout
strcat
strchr
strcmp
strcoll
strcpy
strcspn
strerror
strftime
strlen
strncat
strncmp
strncpy
strpbrk
strrchr
strspn
strstr
strtod
strtok
strtol
strtoul
struct
struct lconv
struct tm
strxfrm
switch
system
TMP_
MAX tan
tanh
time
time_t
tmpfile
tmpnam
tolower
toupper
typedef
UCHAR_
MAX UINT_
MAX ULONG_
MAX USHRT_
MAX ungetc
union
unsigned
unsigned
unsigned char
unsigned long
unsigned short
va_
arg va_
end va_
list va_
start vfprintf
void
void
void
void
void *
volatile
vprintf
vsprintf
wctomb
while