標準ライブラリ構築ツールで-reent オプションを指定して作成したライブラリは、rand、srand関数およびEC++ライブラリを除いてすべてリエントラントに実行できます。
-reent オプションを指定していない場合について、表 7.4および表 7.5にリエントラントライブラリ一覧を示します。表中、△で示した関数は、errno変数を設定しますので、プログラム中でerrnoを参照していなければリエントラントに実行できます。
リエントラント欄 ◯:リエントラント ×:ノンリエントラント △:errnoを設定
表 7.4 | C(C89)リエントラントライブラリ関数一覧 |
|
|
|
|
|
|
|
stddef.h
|
offsetof
|
○
|
|
math.h
|
frexp
|
△
|
assert.h
|
assert
|
×
|
|
ldexp
|
△
|
ctype.h
|
isalnum
|
○
|
|
log
|
△
|
isalpha
|
○
|
|
log10
|
△
|
iscntrl
|
○
|
|
modf
|
△
|
isdigit
|
○
|
|
pow
|
△
|
isgraph
|
○
|
|
sqrt
|
△*1
|
islower
|
○
|
|
ceil
|
△
|
isprint
|
○
|
|
fabs
|
△*1
|
ispunct
|
○
|
|
floor
|
△
|
isspace
|
○
|
|
fmod
|
△
|
isupper
|
○
|
|
mathf.h
|
acosf
|
△
|
isxdigit
|
○
|
|
asinf
|
△
|
tolower
|
○
|
|
atanf
|
△
|
toupper
|
○
|
|
atan2f
|
△*2
|
math.h
|
acos
|
△
|
|
cosf
|
△*2
|
asin
|
△
|
|
sinf
|
△*2
|
atan
|
△
|
|
tanf
|
△
|
atan2
|
△*2
|
|
coshf
|
△
|
cos
|
△*2
|
|
sinhf
|
△
|
sin
|
△*2
|
|
tanhf
|
△
|
tan
|
△
|
|
expf
|
△
|
cosh
|
△
|
|
frexpf
|
△
|
sinh
|
△
|
|
ldexpf
|
△
|
tanh
|
△
|
|
logf
|
△
|
exp
|
△
|
|
log10f
|
△
|
mathf.h
|
modff
|
△
|
|
stdio.h
|
gets
|
×
|
powf
|
△
|
|
putc
|
×
|
sqrtf
|
△*1
|
|
putchar
|
×
|
ceilf
|
△
|
|
puts
|
×
|
fabsf
|
○
|
|
ungetc
|
×
|
fabsl
|
△*1
|
|
fread
|
×
|
floorf
|
△
|
|
fwrite
|
×
|
fmodf
|
△
|
|
fseek
|
×
|
setjmp.h
|
setjmp
|
○
|
|
ftell
|
×
|
longjmp
|
○
|
|
rewind
|
×
|
stdarg.h
|
va_start
|
○
|
|
clearerr
|
×
|
va_arg
|
○
|
|
feof
|
×
|
va_end
|
○
|
|
ferror
|
×
|
stdio.h
|
fclose
|
×
|
|
perror
|
×
|
fflush
|
×
|
|
stdlib.h
|
atof
|
△
|
fopen
|
×
|
|
atoi
|
△
|
freopen
|
×
|
|
atol
|
△
|
setbuf
|
×
|
|
atoll
|
△
|
setvbuf
|
×
|
|
strtod
|
△
|
fprintf
|
×
|
|
strtol
|
△
|
fscanf
|
×
|
|
strtoul
|
△
|
printf
|
×
|
|
strtoll
|
△
|
scanf
|
×
|
|
strtoull
|
△
|
sprintf
|
×
|
|
rand
|
×
|
sscanf
|
△
|
|
srand
|
×
|
vfprintf
|
×
|
|
calloc
|
×
|
vprintf
|
×
|
|
free
|
×
|
vsprintf
|
×
|
|
malloc
|
×
|
fgetc
|
×
|
|
realloc
|
×
|
fgets
|
×
|
|
bsearch
|
○
|
fputc
|
×
|
|
qsort
|
○
|
fputs
|
×
|
|
abs
|
○
|
getc
|
×
|
|
div
|
○
|
getchar
|
×
|
|
labs
|
○
|
stdlib.h
|
llabs
|
○
|
|
string.h
|
strchr
|
○
|
ldiv
|
○
|
|
strcspn
|
○
|
lldiv
|
○
|
|
strpbrk
|
○
|
string.h
|
memcpy
|
○
|
|
strrchr
|
○
|
strcpy
|
○
|
|
strspn
|
○
|
strncpy
|
○
|
|
strstr
|
○
|
strcat
|
○
|
|
strtok
|
×
|
strncat
|
○
|
|
memset
|
○
|
memcmp
|
○
|
|
strerror
|
○
|
strcmp
|
○
|
|
strlen
|
○
|
strncmp
|
○
|
|
memmove
|
○
|
memchr
|
○
|
|
注 1. | 関数呼び出しが命令に置き換わる場合は errno変数を更新しないため ○ になります。
命令に置き換わる条件は、コンパイルオプションの-libraryの項目を参照ください。 |
注 2. | 三角関数演算器を利用するコードに置き換わると×(ノンリエントラント)になる場合があります。詳細は、コンパイルオプションの-tfuの項目を参照ください。 |
表 7.5 | C99リエントラントライブラリ関数一覧 |
|
|
|
|
|
|
|
stddef.h
|
isblank
|
○
|
|
math.h
|
sqrtl
|
△*1
|
math.h
|
acosl
|
△
|
|
ceill
|
△
|
atanl
|
△
|
|
fabsl
|
△*1
|
atan2l
|
△*2
|
|
floorl
|
△
|
cosl
|
△*2
|
|
fmodl
|
△
|
sinl
|
△*2
|
|
fpclassify
|
○
|
tanl
|
△
|
|
isfinite
|
○
|
coshl
|
△
|
|
isinf
|
○
|
sinhl
|
△
|
|
isnan
|
○
|
tanhl
|
△
|
|
isnormal
|
○
|
expl
|
△
|
|
signbit
|
○
|
frexpl
|
△
|
|
isgreater
|
○
|
ldexpl
|
△
|
|
isgreaterequal
|
○
|
logl
|
△
|
|
isless
|
○
|
log10l
|
△
|
|
islessequal
|
○
|
modfl
|
△
|
|
islessgreater
|
○
|
powl
|
△
|
|
isunordered
|
○
|
math.h
|
acosh
|
×
|
|
math.h
|
cbrt
|
○
|
acoshf
|
×
|
|
cbrtf
|
○
|
acoshl
|
×
|
|
cbrtl
|
○
|
asinh
|
×
|
|
hypot
|
×
|
asinhf
|
×
|
|
hypotf
|
×
|
asinhl
|
×
|
|
hypotl
|
×
|
atanh
|
×
|
|
erf
|
×
|
atanhf
|
×
|
|
erff
|
×
|
atanhl
|
×
|
|
erfl
|
×
|
exp2
|
×
|
|
erfc
|
×
|
exp2f
|
×
|
|
erfcf
|
×
|
exp2l
|
×
|
|
erfcl
|
×
|
expm1
|
△
|
|
lgamma
|
×
|
expm1f
|
△
|
|
lgammaf
|
×
|
expm1l
|
△
|
|
lgammal
|
×
|
ilogb
|
○
|
|
tgamma
|
×
|
ilogbf
|
○
|
|
tgammaf
|
×
|
ilogbl
|
○
|
|
tgammal
|
×
|
log1p
|
×
|
|
nearbyint
|
○
|
log1pf
|
×
|
|
nearbyintf
|
○
|
log1pl
|
×
|
|
nearbyintl
|
○
|
log2
|
×
|
|
rint
|
×
|
log2f
|
×
|
|
rintf
|
×
|
log2l
|
×
|
|
rintl
|
×
|
logb
|
×
|
|
lrint
|
×
|
logbf
|
×
|
|
lrintf
|
×
|
logbl
|
×
|
|
lrintl
|
×
|
scalbn
|
×
|
|
llrint
|
×
|
scalbnf
|
×
|
|
llrintf
|
×
|
scalbnl
|
×
|
|
llrintl
|
×
|
scalbln
|
×
|
|
round
|
○
|
scalblnf
|
×
|
|
roundf
|
○
|
scalblnl
|
×
|
|
roundl
|
○
|
math.h
|
lround
|
×
|
|
math.h
|
fmin
|
○
|
lroundf
|
×
|
|
fminf
|
○
|
lroundl
|
×
|
|
fminl
|
○
|
llround
|
×
|
|
fma
|
×
|
llroundf
|
×
|
|
fmaf
|
×
|
llroundl
|
×
|
|
fmal
|
×
|
trunc
|
○
|
|
stdarg.h
|
va_copy
|
○
|
truncf
|
○
|
|
stdio.h
|
snprintf
|
×
|
truncl
|
○
|
|
vsnprintf
|
×
|
remainder
|
×
|
|
vfscanf
|
×
|
remainderf
|
×
|
|
vscanf
|
×
|
remainderl
|
×
|
|
vsscanf
|
×
|
remquo
|
×
|
|
complex.h
|
cacos
|
×
|
remquof
|
×
|
|
cacosf
|
×
|
remquol
|
×
|
|
cacosl
|
×
|
copysign
|
○
|
|
casin
|
×
|
copysignf
|
○
|
|
casinf
|
×
|
copysignl
|
○
|
|
casinl
|
×
|
nan
|
○
|
|
catan
|
×
|
nanf
|
○
|
|
catanf
|
×
|
nanl
|
○
|
|
catanl
|
×
|
nextafter
|
×
|
|
ccos
|
×
|
nextafterf
|
×
|
|
ccosf
|
×
|
nextafterl
|
×
|
|
ccosl
|
×
|
nexttoward
|
×
|
|
csin
|
×
|
nexttowardf
|
×
|
|
csinf
|
×
|
nexttowardl
|
×
|
|
csinl
|
×
|
fdim
|
○
|
|
ctan
|
△
|
fdimf
|
○
|
|
ctanf
|
△
|
fdiml
|
○
|
|
ctanl
|
△
|
fmax
|
○
|
|
cacosh
|
×
|
fmaxf
|
○
|
|
cacoshf
|
×
|
fmaxl
|
○
|
|
cacoshl
|
×
|
complex.h
|
casinh
|
×
|
|
complex.h
|
cimag
|
○
|
casinhf
|
×
|
|
cimagf
|
○
|
casinhl
|
×
|
|
cimagl
|
○
|
catanh
|
×
|
|
conj
|
○
|
catanhf
|
×
|
|
conjf
|
○
|
catanhl
|
×
|
|
conjl
|
○
|
ccosh
|
×
|
|
cproj
|
○
|
ccoshf
|
×
|
|
cprojf
|
○
|
ccoshl
|
×
|
|
cprojl
|
○
|
csinh
|
×
|
|
creal
|
○
|
csinhf
|
×
|
|
crealf
|
○
|
csinhl
|
×
|
|
creall
|
○
|
ctanh
|
△
|
|
fenv.h
|
feclearexcept
|
×
|
ctanhf
|
△
|
|
fegetexceptflag
|
○
|
ctanhl
|
△
|
|
feraiseexcept
|
×
|
cexp
|
×
|
|
fesetexceptflag
|
×
|
cexpf
|
×
|
|
fetestexcept
|
○
|
cexpl
|
×
|
|
fegetround
|
○
|
clog
|
×
|
|
fesetround
|
×
|
clogf
|
×
|
|
fegetenv
|
○
|
clogl
|
×
|
|
feholdexcept
|
×
|
cabs
|
×
|
|
fesetenv
|
×
|
cabsf
|
×
|
|
feupdateenv
|
×
|
cabsl
|
×
|
|
inttypes.h
|
imaxabs
|
○
|
cpow
|
×
|
|
imaxdiv
|
○
|
cpowf
|
△
|
|
strtoimax
|
△
|
cpowl
|
△
|
|
strtoumax
|
△
|
csqrt
|
△
|
|
wcstoimax
|
△
|
csqrtf
|
△
|
|
wcstoumax
|
△
|
csqrtl
|
△
|
|
wchar.h
|
fwprintf
|
×
|
carg
|
△
|
|
vfwprintf
|
×
|
cargf
|
△
|
|
swprintf
|
×
|
cargl
|
△
|
|
vswprintf
|
×
|
wchar.h
|
wprintf
|
×
|
|
wchar.h
|
wcstoul
|
○
|
vwprintf
|
×
|
|
wcstoull
|
△
|
fwscanf
|
×
|
|
wcscpy
|
○
|
vfwscanf
|
×
|
|
wcsncpy
|
○
|
swscanf
|
×
|
|
wmemcpy
|
○
|
vswscanf
|
×
|
|
wmemmove
|
○
|
wscanf
|
×
|
|
wcscat
|
○
|
vwscanf
|
×
|
|
wcsncat
|
○
|
fgetwc
|
×
|
|
wcscmp
|
○
|
fgetws
|
×
|
|
wcsncmp
|
○
|
fputwc
|
×
|
|
wmemcmp
|
○
|
fputws
|
×
|
|
wcschr
|
○
|
fwide
|
×
|
|
wcscspn
|
○
|
getwc
|
×
|
|
wcspbrk
|
○
|
getwchar
|
×
|
|
wcsrchr
|
○
|
putwc
|
×
|
|
wcsspn
|
○
|
putwchar
|
×
|
|
wcsstr
|
○
|
ungetwc
|
×
|
|
wcstok
|
○
|
wcstod
|
×
|
|
wmemchr
|
○
|
wcstof
|
×
|
|
wcslen
|
○
|
wcstold
|
×
|
|
wmemset
|
○
|
wcstol
|
△
|
|
mbsinit
|
○
|
wcstoll
|
△
|
|
mbrlen
|
×
|
注 1. | 関数呼び出しが命令に置き換わる場合は errno変数を更新しないため ○ になります。
命令に置き換わる条件は、コンパイルオプションの-libraryの項目を参照ください。 |
注 2. | 三角関数演算器を利用するコードに置き換わると×(ノンリエントラント)になる場合があります。詳細は、コンパイルオプションの-tfuの項目を参照ください。 |