跳到主要内容

附录 B:标准符号级对照表(C90 / C99 全部必需符号 vs 本库)

本附录把 C90 / C99 要求的每一个符号逐条列出,供符合性追溯使用;「库实现」列已对照交付库 libc.a 与交付头文件核定。 列含义 —— 类别:func 函数 / macro 宏 / type 类型 / type-macro 泛型宏 / member 结构成员;要求引入:该符号由 C90 还是 C99 引入;C90/C99 方言可见:在 -std=c90 / -std=c99 下是否可见(隐藏 = 该方言下本就不该可见,属正常;— = 该头本方言下不存在);库实现:在库 = 该函数在交付 libc.a 中有定义;编译器自带 = 宏 / 类型 / 泛型宏 / 结构成员,由工具链头文件提供,不进入 libc.a;默认链接缺失 为唯一例外。

总量统计:共 822 行符号记录(753 个唯一符号名,重名者来自跨头复用,如 acos 同属 <math.h> 与 <tgmath.h>)。

类别条数要求引入条数
func 函数305C90274
macro 宏365C99548
type 类型53合计822
type-macro 泛型宏72
member 结构成员27
合计822

函数符号共 305 个:304 个在交付库 libc.a 中有定义,唯一缺失为 <stdio.h> 的 rename(详见 10.2 G3)。其余 517 个为宏 / 类型 / 泛型宏 / 结构成员,由工具链头文件提供。 核对结果:交付 libc.a 的全局定义符号表与上表 305 个函数符号逐个比对——304 命中;rename 缺失(既无定义、也无未定义引用)。

头文件符号数C90C99其中函数
<assert.h>2200
<complex.h>2702722
<ctype.h>1413114
<errno.h>4310
<fenv.h>2402411
<float.h>312920
<inttypes.h>16101616
<iso646.h>110110
<limits.h>191630
<locale.h>282802
<math.h>85236257
<setjmp.h>3302
<signal.h>121202
<stdarg.h>5410
<stdbool.h>4040
<stddef.h>5500
<stdint.h>890890
<stdio.h>6358546
<stdlib.h>4234836
<string.h>2222022
<tgmath.h>600600
<time.h>222209
<wchar.h>6706758
<wctype.h>2202218
合计822274548305

B.1 <assert.h>(2 符号)​

符号类别要求引入C90 方言C99 方言库实现备注
assertmacroC90√√编译器自带§7.2.1 诊断
NDEBUGmacroC90可选/无可选/无编译器自带可选控制宏, 存在即合法

B.2 <ctype.h>(14 符号)​

符号类别要求引入C90 方言C99 方言库实现备注
isalnumfuncC90√√在库
isalphafuncC90√√在库
iscntrlfuncC90√√在库
isdigitfuncC90√√在库
isgraphfuncC90√√在库
islowerfuncC90√√在库
isprintfuncC90√√在库
ispunctfuncC90√√在库
isspacefuncC90√√在库
isupperfuncC90√√在库
isxdigitfuncC90√√在库
tolowerfuncC90√√在库
toupperfuncC90√√在库
isblankfuncC99隐藏√在库§7.4.1.3 新增

B.3 <errno.h>(4 符号)​

符号类别要求引入C90 方言C99 方言库实现备注
errnomacroC90√√编译器自带可赋值左值宏
EDOMmacroC90√√编译器自带
ERANGEmacroC90√√编译器自带
EILSEQmacroC99√√编译器自带§7.5 新增

B.4 <float.h>(31 符号)​

符号类别要求引入C90 方言C99 方言库实现备注
FLT_ROUNDSmacroC90√√编译器自带
FLT_RADIXmacroC90√√编译器自带
FLT_MANT_DIGmacroC90√√编译器自带
DBL_MANT_DIGmacroC90√√编译器自带
LDBL_MANT_DIGmacroC90√√编译器自带
FLT_DIGmacroC90√√编译器自带
DBL_DIGmacroC90√√编译器自带
LDBL_DIGmacroC90√√编译器自带
FLT_MIN_EXPmacroC90√√编译器自带
DBL_MIN_EXPmacroC90√√编译器自带
LDBL_MIN_EXPmacroC90√√编译器自带
FLT_MIN_10_EXPmacroC90√√编译器自带
DBL_MIN_10_EXPmacroC90√√编译器自带
LDBL_MIN_10_EXPmacroC90√√编译器自带
FLT_MAX_EXPmacroC90√√编译器自带
DBL_MAX_EXPmacroC90√√编译器自带
LDBL_MAX_EXPmacroC90√√编译器自带
FLT_MAX_10_EXPmacroC90√√编译器自带
DBL_MAX_10_EXPmacroC90√√编译器自带
LDBL_MAX_10_EXPmacroC90√√编译器自带
FLT_MAXmacroC90√√编译器自带
DBL_MAXmacroC90√√编译器自带
LDBL_MAXmacroC90√√编译器自带
FLT_EPSILONmacroC90√√编译器自带
DBL_EPSILONmacroC90√√编译器自带
LDBL_EPSILONmacroC90√√编译器自带
FLT_MINmacroC90√√编译器自带
DBL_MINmacroC90√√编译器自带
LDBL_MINmacroC90√√编译器自带
FLT_EVAL_METHODmacroC99√√编译器自带
DECIMAL_DIGmacroC99隐藏√编译器自带

B.5 <limits.h>(19 符号)​

符号类别要求引入C90 方言C99 方言库实现备注
CHAR_BITmacroC90√√编译器自带
SCHAR_MINmacroC90√√编译器自带
SCHAR_MAXmacroC90√√编译器自带
UCHAR_MAXmacroC90√√编译器自带
CHAR_MINmacroC90√√编译器自带
CHAR_MAXmacroC90√√编译器自带
MB_LEN_MAXmacroC90√√编译器自带
SHRT_MINmacroC90√√编译器自带
SHRT_MAXmacroC90√√编译器自带
USHRT_MAXmacroC90√√编译器自带
INT_MINmacroC90√√编译器自带
INT_MAXmacroC90√√编译器自带
UINT_MAXmacroC90√√编译器自带
LONG_MINmacroC90√√编译器自带
LONG_MAXmacroC90√√编译器自带
ULONG_MAXmacroC90√√编译器自带
LLONG_MINmacroC99隐藏√编译器自带
LLONG_MAXmacroC99隐藏√编译器自带
ULLONG_MAXmacroC99隐藏√编译器自带

B.6 <locale.h>(28 符号)​

符号类别要求引入C90 方言C99 方言库实现备注
NULLmacroC90√√编译器自带
LC_ALLmacroC90√√编译器自带
LC_COLLATEmacroC90√√编译器自带
LC_CTYPEmacroC90√√编译器自带
LC_MONETARYmacroC90√√编译器自带
LC_NUMERICmacroC90√√编译器自带
LC_TIMEmacroC90√√编译器自带
struct lconvtypeC90√√编译器自带
decimal_pointmemberC90√√编译器自带lconv 成员
thousands_sepmemberC90√√编译器自带
groupingmemberC90√√编译器自带
int_curr_symbolmemberC90√√编译器自带
currency_symbolmemberC90√√编译器自带
mon_decimal_pointmemberC90√√编译器自带
mon_thousands_sepmemberC90√√编译器自带
mon_groupingmemberC90√√编译器自带
positive_signmemberC90√√编译器自带
negative_signmemberC90√√编译器自带
int_frac_digitsmemberC90√√编译器自带
frac_digitsmemberC90√√编译器自带
p_cs_precedesmemberC90√√编译器自带
p_sep_by_spacememberC90√√编译器自带
n_cs_precedesmemberC90√√编译器自带
n_sep_by_spacememberC90√√编译器自带
p_sign_posnmemberC90√√编译器自带
n_sign_posnmemberC90√√编译器自带
setlocalefuncC90√√在库
localeconvfuncC90√√在库

B.7 <math.h>(85 符号)​

符号类别要求引入C90 方言C99 方言库实现备注
HUGE_VALmacroC90√√编译器自带域/值域错误返回
acosfuncC90√√在库仅 double 形态
asinfuncC90√√在库仅 double 形态
atanfuncC90√√在库仅 double 形态
atan2funcC90√√在库仅 double 形态
ceilfuncC90√√在库仅 double 形态
cosfuncC90√√在库仅 double 形态
copysignfuncC99隐藏√在库要求 f/l 后缀变体
coshfuncC90√√在库仅 double 形态
expfuncC90√√在库仅 double 形态
fabsfuncC90√√在库仅 double 形态
floorfuncC90√√在库仅 double 形态
fmodfuncC90√√在库仅 double 形态
frexpfuncC90√√在库仅 double 形态
ldexpfuncC90√√在库仅 double 形态
logfuncC90√√在库仅 double 形态
log10funcC90√√在库仅 double 形态
modffuncC90√√在库仅 double 形态
powfuncC90√√在库仅 double 形态
sinfuncC90√√在库仅 double 形态
sinhfuncC90√√在库仅 double 形态
sqrtfuncC90√√在库仅 double 形态
tanfuncC90√√在库仅 double 形态
tanhfuncC90√√在库仅 double 形态
HUGE_VALFmacroC99√√编译器自带
HUGE_VALLmacroC99√√编译器自带
INFINITYmacroC99√√编译器自带
NANmacroC99√√编译器自带
FP_INFINITEmacroC99隐藏√编译器自带
FP_NANmacroC99隐藏√编译器自带
FP_NORMALmacroC99隐藏√编译器自带
FP_SUBNORMALmacroC99隐藏√编译器自带
FP_ZEROmacroC99隐藏√编译器自带
FP_FAST_FMAmacroC99隐藏隐藏编译器自带可选, 有则 fma 更快
FP_ILOGB0macroC99隐藏√编译器自带
FP_ILOGBNANmacroC99隐藏√编译器自带
MATH_ERRNOmacroC99隐藏√编译器自带
MATH_ERREXCEPTmacroC99隐藏√编译器自带
math_errhandlingmacroC99隐藏√编译器自带
acoshfuncC99隐藏√在库要求 f/l 后缀变体
asinhfuncC99隐藏√在库要求 f/l 后缀变体
atanhfuncC99隐藏√在库要求 f/l 后缀变体
cbrtfuncC99隐藏√在库要求 f/l 后缀变体
erffuncC99隐藏√在库要求 f/l 后缀变体
erfcfuncC99隐藏√在库要求 f/l 后缀变体
exp2funcC99隐藏√在库要求 f/l 后缀变体
expm1funcC99隐藏√在库要求 f/l 后缀变体
fdimfuncC99隐藏√在库要求 f/l 后缀变体
fmafuncC99隐藏√在库要求 f/l 后缀变体
fmaxfuncC99隐藏√在库要求 f/l 后缀变体
fminfuncC99隐藏√在库要求 f/l 后缀变体
hypotfuncC99隐藏√在库要求 f/l 后缀变体
ilogbfuncC99隐藏√在库要求 f/l 后缀变体
lgammafuncC99隐藏√在库要求 f/l 后缀变体
llrintfuncC99隐藏√在库要求 f/l 后缀变体
llroundfuncC99隐藏√在库要求 f/l 后缀变体
log1pfuncC99隐藏√在库要求 f/l 后缀变体
log2funcC99隐藏√在库要求 f/l 后缀变体
logbfuncC99隐藏√在库要求 f/l 后缀变体
lrintfuncC99隐藏√在库要求 f/l 后缀变体
lroundfuncC99隐藏√在库要求 f/l 后缀变体
nanfuncC99隐藏√在库要求 f/l 后缀变体
nearbyintfuncC99隐藏√在库要求 f/l 后缀变体
nextafterfuncC99隐藏√在库要求 f/l 后缀变体
nexttowardfuncC99隐藏√在库要求 f/l 后缀变体
remainderfuncC99隐藏√在库要求 f/l 后缀变体
remquofuncC99隐藏√在库要求 f/l 后缀变体
rintfuncC99隐藏√在库要求 f/l 后缀变体
roundfuncC99隐藏√在库要求 f/l 后缀变体
scalblnfuncC99隐藏√在库要求 f/l 后缀变体
scalbnfuncC99隐藏√在库要求 f/l 后缀变体
tgammafuncC99隐藏√在库要求 f/l 后缀变体
truncfuncC99隐藏√在库要求 f/l 后缀变体
fpclassifytype-macroC99隐藏√编译器自带分类/比较泛型宏
isfinitetype-macroC99隐藏√编译器自带分类/比较泛型宏
isinftype-macroC99隐藏√编译器自带分类/比较泛型宏
isnantype-macroC99隐藏√编译器自带分类/比较泛型宏
isnormaltype-macroC99隐藏√编译器自带分类/比较泛型宏
signbittype-macroC99隐藏√编译器自带分类/比较泛型宏
isgreatertype-macroC99隐藏√编译器自带分类/比较泛型宏
isgreaterequaltype-macroC99隐藏√编译器自带分类/比较泛型宏
islesstype-macroC99隐藏√编译器自带分类/比较泛型宏
islessequaltype-macroC99隐藏√编译器自带分类/比较泛型宏
islessgreatertype-macroC99隐藏√编译器自带分类/比较泛型宏
isunorderedtype-macroC99隐藏√编译器自带分类/比较泛型宏

B.8 <setjmp.h>(3 符号)​

符号类别要求引入C90 方言C99 方言库实现备注
jmp_buftypeC90√√编译器自带数组类型
setjmpfuncC90√√在库§7.6p3/§7.13p3: 宏或外部函数形态均可
longjmpfuncC90√√在库

B.9 <signal.h>(12 符号)​

符号类别要求引入C90 方言C99 方言库实现备注
sig_atomic_ttypeC90√√编译器自带
SIGABRTmacroC90√√编译器自带
SIGFPEmacroC90√√编译器自带
SIGILLmacroC90√√编译器自带
SIGINTmacroC90√√编译器自带
SIGSEGVmacroC90√√编译器自带
SIGTERMmacroC90√√编译器自带
SIG_DFLmacroC90√√编译器自带
SIG_ERRmacroC90√√编译器自带
SIG_IGNmacroC90√√编译器自带
signalfuncC90√√在库
raisefuncC90√√在库

B.10 <stdarg.h>(5 符号)​

符号类别要求引入C90 方言C99 方言库实现备注
va_listtypeC90√√编译器自带
va_startmacroC90√√编译器自带
va_argmacroC90√√编译器自带
va_endmacroC90√√编译器自带
va_copymacroC99隐藏√编译器自带

B.11 <stddef.h>(5 符号)​

符号类别要求引入C90 方言C99 方言库实现备注
ptrdiff_ttypeC90√√编译器自带
size_ttypeC90√√编译器自带
wchar_ttypeC90√√编译器自带
NULLmacroC90√√编译器自带
offsetofmacroC90√√编译器自带

B.12 <stdio.h>(63 符号)​

符号类别要求引入C90 方言C99 方言库实现备注
FILEtypeC90√√编译器自带
fpos_ttypeC90√√编译器自带
_IOFBFmacroC90√√编译器自带
_IOLBFmacroC90√√编译器自带
_IONBFmacroC90√√编译器自带
BUFSIZmacroC90√√编译器自带
EOFmacroC90√√编译器自带
FILENAME_MAXmacroC90√√编译器自带
FOPEN_MAXmacroC90√√编译器自带
TMP_MAXmacroC90√√编译器自带
L_tmpnammacroC90√√编译器自带
SEEK_CURmacroC90√√编译器自带
SEEK_ENDmacroC90√√编译器自带
SEEK_SETmacroC90√√编译器自带
stdinmacroC90√√编译器自带外部表达式
stdoutmacroC90√√编译器自带
stderrmacroC90√√编译器自带
clearerrfuncC90√√在库
fclosefuncC90√√在库
feoffuncC90√√在库
ferrorfuncC90√√在库
fflushfuncC90√√在库
fgetcfuncC90√√在库
fgetposfuncC90√√在库
fgetsfuncC90√√在库
fscanffuncC90√√在库
fopenfuncC90√√在库
fprintffuncC90√√在库
fputcfuncC90√√在库
fputsfuncC90√√在库
freadfuncC90√√在库
freopenfuncC90√√在库
fseekfuncC90√√在库
fsetposfuncC90√√在库
ftellfuncC90√√在库
fwritefuncC90√√在库
getcfuncC90√√在库
getcharfuncC90√√在库
getsfuncC90√√在库
perrorfuncC90√√在库
printffuncC90√√在库
putcfuncC90√√在库
putcharfuncC90√√在库
putsfuncC90√√在库
removefuncC90√√在库
renamefuncC90√√默认链接缺失
rewindfuncC90√√在库
scanffuncC90√√在库
setbuffuncC90√√在库
setvbuffuncC90√√在库
sprintffuncC90√√在库
sscanffuncC90√√在库
tmpfilefuncC90√√在库
tmpnamfuncC90√√在库
ungetcfuncC90√√在库
vfprintffuncC90√√在库
vprintffuncC90√√在库
vsprintffuncC90√√在库
snprintffuncC99√√在库
vsnprintffuncC99√√在库
vfscanffuncC99√√在库
vscanffuncC99√√在库
vsscanffuncC99√√在库

B.13 <stdlib.h>(42 符号)​

符号类别要求引入C90 方言C99 方言库实现备注
div_ttypeC90√√编译器自带
ldiv_ttypeC90√√编译器自带
EXIT_FAILUREmacroC90√√编译器自带
EXIT_SUCCESSmacroC90√√编译器自带
MB_CUR_MAXmacroC90√√编译器自带非负整数宏
RAND_MAXmacroC90√√编译器自带
abortfuncC90√√在库
absfuncC90√√在库
atexitfuncC90√√在库
atoffuncC90√√在库
atoifuncC90√√在库
atolfuncC90√√在库
bsearchfuncC90√√在库
callocfuncC90√√在库
divfuncC90√√在库
exitfuncC90√√在库
freefuncC90√√在库
getenvfuncC90√√在库
labsfuncC90√√在库
ldivfuncC90√√在库
mallocfuncC90√√在库
mblenfuncC90√√在库
mbstowcsfuncC90√√在库
mbtowcfuncC90√√在库
qsortfuncC90√√在库
randfuncC90√√在库
reallocfuncC90√√在库
srandfuncC90√√在库
strtodfuncC90√√在库
strtolfuncC90√√在库
strtoulfuncC90√√在库
systemfuncC90√√在库
wcstombsfuncC90√√在库
wctombfuncC90√√在库
_ExitfuncC99隐藏√在库
atollfuncC99隐藏√在库
strtollfuncC99隐藏√在库
strtoullfuncC99隐藏√在库
strtoffuncC99隐藏√在库
strtoldfuncC99隐藏√在库
llabsfuncC99隐藏√在库
lldivfuncC99隐藏√在库

B.14 <string.h>(22 符号)​

符号类别要求引入C90 方言C99 方言库实现备注
memchrfuncC90√√在库
memcmpfuncC90√√在库
memcpyfuncC90√√在库
memmovefuncC90√√在库
memsetfuncC90√√在库
strcatfuncC90√√在库
strchrfuncC90√√在库
strcmpfuncC90√√在库
strcollfuncC90√√在库
strcpyfuncC90√√在库
strcspnfuncC90√√在库
strerrorfuncC90√√在库
strlenfuncC90√√在库
strncatfuncC90√√在库
strncmpfuncC90√√在库
strncpyfuncC90√√在库
strpbrkfuncC90√√在库
strrchrfuncC90√√在库
strspnfuncC90√√在库
strstrfuncC90√√在库
strtokfuncC90√√在库
strxfrmfuncC90√√在库

B.15 <time.h>(22 符号)​

符号类别要求引入C90 方言C99 方言库实现备注
CLOCKS_PER_SECmacroC90√√编译器自带
clock_ttypeC90√√编译器自带
time_ttypeC90√√编译器自带
struct tmtypeC90√√编译器自带
tm_secmemberC90√√编译器自带
tm_minmemberC90√√编译器自带
tm_hourmemberC90√√编译器自带
tm_mdaymemberC90√√编译器自带
tm_monmemberC90√√编译器自带
tm_yearmemberC90√√编译器自带
tm_wdaymemberC90√√编译器自带
tm_ydaymemberC90√√编译器自带
tm_isdstmemberC90√√编译器自带
asctimefuncC90√√在库
clockfuncC90√√在库
ctimefuncC90√√在库
difftimefuncC90√√在库
gmtimefuncC90√√在库
localtimefuncC90√√在库
mktimefuncC90√√在库
strftimefuncC90√√在库
timefuncC90√√在库

B.16 <complex.h>(27 符号)​

符号类别要求引入C90 方言C99 方言库实现备注
complexmacroC99√√编译器自带#define complex _Complex
_Complex_ImacroC99√√编译器自带
imaginarymacroC99隐藏隐藏编译器自带若支持 _Imaginary; 可选
_Imaginary_ImacroC99隐藏隐藏编译器自带可选
ImacroC99√√编译器自带
cacosfuncC99√√在库需 f/l 后缀变体
casinfuncC99√√在库需 f/l 后缀变体
catanfuncC99√√在库需 f/l 后缀变体
ccosfuncC99√√在库需 f/l 后缀变体
csinfuncC99√√在库需 f/l 后缀变体
ctanfuncC99√√在库需 f/l 后缀变体
cacoshfuncC99√√在库需 f/l 后缀变体
casinhfuncC99√√在库需 f/l 后缀变体
catanhfuncC99√√在库需 f/l 后缀变体
ccoshfuncC99√√在库需 f/l 后缀变体
csinhfuncC99√√在库需 f/l 后缀变体
ctanhfuncC99√√在库需 f/l 后缀变体
cexpfuncC99√√在库需 f/l 后缀变体
clogfuncC99√√在库需 f/l 后缀变体
cabsfuncC99√√在库需 f/l 后缀变体
cpowfuncC99√√在库需 f/l 后缀变体
csqrtfuncC99√√在库需 f/l 后缀变体
cimagfuncC99√√在库需 f/l 后缀变体
crealfuncC99√√在库需 f/l 后缀变体
conjfuncC99√√在库需 f/l 后缀变体
cprojfuncC99√√在库需 f/l 后缀变体
cargfuncC99√√在库需 f/l 后缀变体

B.17 <fenv.h>(24 符号)​

符号类别要求引入C90 方言C99 方言库实现备注
fenv_ttypeC99√√编译器自带
fexcept_ttypeC99√√编译器自带
FE_INVALIDmacroC99√√编译器自带
FE_DIVBYZEROmacroC99√√编译器自带
FE_OVERFLOWmacroC99√√编译器自带
FE_UNDERFLOWmacroC99√√编译器自带
FE_INEXACTmacroC99√√编译器自带
FE_ALL_EXCEPTmacroC99√√编译器自带
FE_TONEARESTmacroC99√√编译器自带
FE_DOWNWARDmacroC99√√编译器自带舍入方向可选支持
FE_UPWARDmacroC99√√编译器自带舍入方向可选支持
FE_TOWARDZEROmacroC99√√编译器自带舍入方向可选支持
FE_DFL_ENVmacroC99√√编译器自带
feclearexceptfuncC99√√在库
fegetexceptflagfuncC99√√在库
feraiseexceptfuncC99√√在库
fesetexceptflagfuncC99√√在库
fetestexceptfuncC99√√在库
fegetroundfuncC99√√在库
fesetroundfuncC99√√在库仅当支持多舍入方向
fegetenvfuncC99√√在库
feholdexceptfuncC99√√在库
fesetenvfuncC99√√在库
feupdateenvfuncC99√√在库

B.18 <inttypes.h>(161 符号)​

符号类别要求引入C90 方言C99 方言库实现备注
imaxdiv_ttypeC99—√编译器自带
imaxabsfuncC99—√在库
imaxdivfuncC99—√在库
strtoimaxfuncC99—√在库
strtoumaxfuncC99—√在库
wcstoimaxfuncC99—√在库
wcstoumaxfuncC99—√在库
PRId8macroC99—√编译器自带PRI/SCN 族
PRIi8macroC99—√编译器自带PRI/SCN 族
PRIo8macroC99—√编译器自带PRI/SCN 族
PRIu8macroC99—√编译器自带PRI/SCN 族
PRIx8macroC99—√编译器自带PRI/SCN 族
PRIX8macroC99—√编译器自带PRI/SCN 族
PRId16macroC99—√编译器自带PRI/SCN 族
PRIi16macroC99—√编译器自带PRI/SCN 族
PRIo16macroC99—√编译器自带PRI/SCN 族
PRIu16macroC99—√编译器自带PRI/SCN 族
PRIx16macroC99—√编译器自带PRI/SCN 族
PRIX16macroC99—√编译器自带PRI/SCN 族
PRId32macroC99—√编译器自带PRI/SCN 族
PRIi32macroC99—√编译器自带PRI/SCN 族
PRIo32macroC99—√编译器自带PRI/SCN 族
PRIu32macroC99—√编译器自带PRI/SCN 族
PRIx32macroC99—√编译器自带PRI/SCN 族
PRIX32macroC99—√编译器自带PRI/SCN 族
PRId64macroC99—√编译器自带PRI/SCN 族
PRIi64macroC99—√编译器自带PRI/SCN 族
PRIo64macroC99—√编译器自带PRI/SCN 族
PRIu64macroC99—√编译器自带PRI/SCN 族
PRIx64macroC99—√编译器自带PRI/SCN 族
PRIX64macroC99—√编译器自带PRI/SCN 族
PRIdLEAST8macroC99—√编译器自带PRI/SCN 族
PRIiLEAST8macroC99—√编译器自带PRI/SCN 族
PRIoLEAST8macroC99—√编译器自带PRI/SCN 族
PRIuLEAST8macroC99—√编译器自带PRI/SCN 族
PRIxLEAST8macroC99—√编译器自带PRI/SCN 族
PRIXLEAST8macroC99—√编译器自带PRI/SCN 族
PRIdLEAST16macroC99—√编译器自带PRI/SCN 族
PRIiLEAST16macroC99—√编译器自带PRI/SCN 族
PRIoLEAST16macroC99—√编译器自带PRI/SCN 族
PRIuLEAST16macroC99—√编译器自带PRI/SCN 族
PRIxLEAST16macroC99—√编译器自带PRI/SCN 族
PRIXLEAST16macroC99—√编译器自带PRI/SCN 族
PRIdLEAST32macroC99—√编译器自带PRI/SCN 族
PRIiLEAST32macroC99—√编译器自带PRI/SCN 族
PRIoLEAST32macroC99—√编译器自带PRI/SCN 族
PRIuLEAST32macroC99—√编译器自带PRI/SCN 族
PRIxLEAST32macroC99—√编译器自带PRI/SCN 族
PRIXLEAST32macroC99—√编译器自带PRI/SCN 族
PRIdLEAST64macroC99—√编译器自带PRI/SCN 族
PRIiLEAST64macroC99—√编译器自带PRI/SCN 族
PRIoLEAST64macroC99—√编译器自带PRI/SCN 族
PRIuLEAST64macroC99—√编译器自带PRI/SCN 族
PRIxLEAST64macroC99—√编译器自带PRI/SCN 族
PRIXLEAST64macroC99—√编译器自带PRI/SCN 族
PRIdFAST8macroC99—√编译器自带PRI/SCN 族
PRIiFAST8macroC99—√编译器自带PRI/SCN 族
PRIoFAST8macroC99—√编译器自带PRI/SCN 族
PRIuFAST8macroC99—√编译器自带PRI/SCN 族
PRIxFAST8macroC99—√编译器自带PRI/SCN 族
PRIXFAST8macroC99—√编译器自带PRI/SCN 族
PRIdFAST16macroC99—√编译器自带PRI/SCN 族
PRIiFAST16macroC99—√编译器自带PRI/SCN 族
PRIoFAST16macroC99—√编译器自带PRI/SCN 族
PRIuFAST16macroC99—√编译器自带PRI/SCN 族
PRIxFAST16macroC99—√编译器自带PRI/SCN 族
PRIXFAST16macroC99—√编译器自带PRI/SCN 族
PRIdFAST32macroC99—√编译器自带PRI/SCN 族
PRIiFAST32macroC99—√编译器自带PRI/SCN 族
PRIoFAST32macroC99—√编译器自带PRI/SCN 族
PRIuFAST32macroC99—√编译器自带PRI/SCN 族
PRIxFAST32macroC99—√编译器自带PRI/SCN 族
PRIXFAST32macroC99—√编译器自带PRI/SCN 族
PRIdFAST64macroC99—√编译器自带PRI/SCN 族
PRIiFAST64macroC99—√编译器自带PRI/SCN 族
PRIoFAST64macroC99—√编译器自带PRI/SCN 族
PRIuFAST64macroC99—√编译器自带PRI/SCN 族
PRIxFAST64macroC99—√编译器自带PRI/SCN 族
PRIXFAST64macroC99—√编译器自带PRI/SCN 族
PRIdMAXmacroC99—√编译器自带PRI/SCN 族
PRIiMAXmacroC99—√编译器自带PRI/SCN 族
PRIoMAXmacroC99—√编译器自带PRI/SCN 族
PRIuMAXmacroC99—√编译器自带PRI/SCN 族
PRIxMAXmacroC99—√编译器自带PRI/SCN 族
PRIXMAXmacroC99—√编译器自带PRI/SCN 族
PRIdPTRmacroC99—√编译器自带PRI/SCN 族
PRIiPTRmacroC99—√编译器自带PRI/SCN 族
PRIoPTRmacroC99—√编译器自带PRI/SCN 族
PRIuPTRmacroC99—√编译器自带PRI/SCN 族
PRIxPTRmacroC99—√编译器自带PRI/SCN 族
PRIXPTRmacroC99—√编译器自带PRI/SCN 族
SCNd8macroC99—√编译器自带PRI/SCN 族
SCNi8macroC99—√编译器自带PRI/SCN 族
SCNo8macroC99—√编译器自带PRI/SCN 族
SCNu8macroC99—√编译器自带PRI/SCN 族
SCNx8macroC99—√编译器自带PRI/SCN 族
SCNd16macroC99—√编译器自带PRI/SCN 族
SCNi16macroC99—√编译器自带PRI/SCN 族
SCNo16macroC99—√编译器自带PRI/SCN 族
SCNu16macroC99—√编译器自带PRI/SCN 族
SCNx16macroC99—√编译器自带PRI/SCN 族
SCNd32macroC99—√编译器自带PRI/SCN 族
SCNi32macroC99—√编译器自带PRI/SCN 族
SCNo32macroC99—√编译器自带PRI/SCN 族
SCNu32macroC99—√编译器自带PRI/SCN 族
SCNx32macroC99—√编译器自带PRI/SCN 族
SCNd64macroC99—√编译器自带PRI/SCN 族
SCNi64macroC99—√编译器自带PRI/SCN 族
SCNo64macroC99—√编译器自带PRI/SCN 族
SCNu64macroC99—√编译器自带PRI/SCN 族
SCNx64macroC99—√编译器自带PRI/SCN 族
SCNdLEAST8macroC99—√编译器自带PRI/SCN 族
SCNiLEAST8macroC99—√编译器自带PRI/SCN 族
SCNoLEAST8macroC99—√编译器自带PRI/SCN 族
SCNuLEAST8macroC99—√编译器自带PRI/SCN 族
SCNxLEAST8macroC99—√编译器自带PRI/SCN 族
SCNdLEAST16macroC99—√编译器自带PRI/SCN 族
SCNiLEAST16macroC99—√编译器自带PRI/SCN 族
SCNoLEAST16macroC99—√编译器自带PRI/SCN 族
SCNuLEAST16macroC99—√编译器自带PRI/SCN 族
SCNxLEAST16macroC99—√编译器自带PRI/SCN 族
SCNdLEAST32macroC99—√编译器自带PRI/SCN 族
SCNiLEAST32macroC99—√编译器自带PRI/SCN 族
SCNoLEAST32macroC99—√编译器自带PRI/SCN 族
SCNuLEAST32macroC99—√编译器自带PRI/SCN 族
SCNxLEAST32macroC99—√编译器自带PRI/SCN 族
SCNdLEAST64macroC99—√编译器自带PRI/SCN 族
SCNiLEAST64macroC99—√编译器自带PRI/SCN 族
SCNoLEAST64macroC99—√编译器自带PRI/SCN 族
SCNuLEAST64macroC99—√编译器自带PRI/SCN 族
SCNxLEAST64macroC99—√编译器自带PRI/SCN 族
SCNdFAST8macroC99—√编译器自带PRI/SCN 族
SCNiFAST8macroC99—√编译器自带PRI/SCN 族
SCNoFAST8macroC99—√编译器自带PRI/SCN 族
SCNuFAST8macroC99—√编译器自带PRI/SCN 族
SCNxFAST8macroC99—√编译器自带PRI/SCN 族
SCNdFAST16macroC99—√编译器自带PRI/SCN 族
SCNiFAST16macroC99—√编译器自带PRI/SCN 族
SCNoFAST16macroC99—√编译器自带PRI/SCN 族
SCNuFAST16macroC99—√编译器自带PRI/SCN 族
SCNxFAST16macroC99—√编译器自带PRI/SCN 族
SCNdFAST32macroC99—√编译器自带PRI/SCN 族
SCNiFAST32macroC99—√编译器自带PRI/SCN 族
SCNoFAST32macroC99—√编译器自带PRI/SCN 族
SCNuFAST32macroC99—√编译器自带PRI/SCN 族
SCNxFAST32macroC99—√编译器自带PRI/SCN 族
SCNdFAST64macroC99—√编译器自带PRI/SCN 族
SCNiFAST64macroC99—√编译器自带PRI/SCN 族
SCNoFAST64macroC99—√编译器自带PRI/SCN 族
SCNuFAST64macroC99—√编译器自带PRI/SCN 族
SCNxFAST64macroC99—√编译器自带PRI/SCN 族
SCNdMAXmacroC99—√编译器自带PRI/SCN 族
SCNiMAXmacroC99—√编译器自带PRI/SCN 族
SCNoMAXmacroC99—√编译器自带PRI/SCN 族
SCNuMAXmacroC99—√编译器自带PRI/SCN 族
SCNxMAXmacroC99—√编译器自带PRI/SCN 族
SCNdPTRmacroC99—√编译器自带PRI/SCN 族
SCNiPTRmacroC99—√编译器自带PRI/SCN 族
SCNoPTRmacroC99—√编译器自带PRI/SCN 族
SCNuPTRmacroC99—√编译器自带PRI/SCN 族
SCNxPTRmacroC99—√编译器自带PRI/SCN 族

B.19 <iso646.h>(11 符号)​

符号类别要求引入C90 方言C99 方言库实现备注
andmacroC99√√编译器自带
and_eqmacroC99√√编译器自带
bitandmacroC99√√编译器自带
bitormacroC99√√编译器自带
complmacroC99√√编译器自带
notmacroC99√√编译器自带
not_eqmacroC99√√编译器自带
ormacroC99√√编译器自带
or_eqmacroC99√√编译器自带
xormacroC99√√编译器自带
xor_eqmacroC99√√编译器自带

B.20 <stdbool.h>(4 符号)​

符号类别要求引入C90 方言C99 方言库实现备注
boolmacroC99√√编译器自带
truemacroC99√√编译器自带
falsemacroC99√√编译器自带
__bool_true_false_are_definedmacroC99√√编译器自带

B.21 <stdint.h>(89 符号)​

符号类别要求引入C90 方言C99 方言库实现备注
int8_ttypeC99√√编译器自带实现选定则必须
uint8_ttypeC99√√编译器自带实现选定则必须
INT8_MINmacroC99√√编译器自带
INT8_MAXmacroC99√√编译器自带
UINT8_MAXmacroC99√√编译器自带
int_least8_ttypeC99√√编译器自带
uint_least8_ttypeC99√√编译器自带
INT_LEAST8_MINmacroC99√√编译器自带
INT_LEAST8_MAXmacroC99√√编译器自带
UINT_LEAST8_MAXmacroC99√√编译器自带
int_fast8_ttypeC99√√编译器自带
uint_fast8_ttypeC99√√编译器自带
INT_FAST8_MINmacroC99√√编译器自带
INT_FAST8_MAXmacroC99√√编译器自带
UINT_FAST8_MAXmacroC99√√编译器自带
int16_ttypeC99√√编译器自带实现选定则必须
uint16_ttypeC99√√编译器自带实现选定则必须
INT16_MINmacroC99√√编译器自带
INT16_MAXmacroC99√√编译器自带
UINT16_MAXmacroC99√√编译器自带
int_least16_ttypeC99√√编译器自带
uint_least16_ttypeC99√√编译器自带
INT_LEAST16_MINmacroC99√√编译器自带
INT_LEAST16_MAXmacroC99√√编译器自带
UINT_LEAST16_MAXmacroC99√√编译器自带
int_fast16_ttypeC99√√编译器自带
uint_fast16_ttypeC99√√编译器自带
INT_FAST16_MINmacroC99√√编译器自带
INT_FAST16_MAXmacroC99√√编译器自带
UINT_FAST16_MAXmacroC99√√编译器自带
int32_ttypeC99√√编译器自带实现选定则必须
uint32_ttypeC99√√编译器自带实现选定则必须
INT32_MINmacroC99√√编译器自带
INT32_MAXmacroC99√√编译器自带
UINT32_MAXmacroC99√√编译器自带
int_least32_ttypeC99√√编译器自带
uint_least32_ttypeC99√√编译器自带
INT_LEAST32_MINmacroC99√√编译器自带
INT_LEAST32_MAXmacroC99√√编译器自带
UINT_LEAST32_MAXmacroC99√√编译器自带
int_fast32_ttypeC99√√编译器自带
uint_fast32_ttypeC99√√编译器自带
INT_FAST32_MINmacroC99√√编译器自带
INT_FAST32_MAXmacroC99√√编译器自带
UINT_FAST32_MAXmacroC99√√编译器自带
int64_ttypeC99√√编译器自带实现选定则必须
uint64_ttypeC99√√编译器自带实现选定则必须
INT64_MINmacroC99√√编译器自带
INT64_MAXmacroC99√√编译器自带
UINT64_MAXmacroC99√√编译器自带
int_least64_ttypeC99√√编译器自带
uint_least64_ttypeC99√√编译器自带
INT_LEAST64_MINmacroC99√√编译器自带
INT_LEAST64_MAXmacroC99√√编译器自带
UINT_LEAST64_MAXmacroC99√√编译器自带
int_fast64_ttypeC99√√编译器自带
uint_fast64_ttypeC99√√编译器自带
INT_FAST64_MINmacroC99√√编译器自带
INT_FAST64_MAXmacroC99√√编译器自带
UINT_FAST64_MAXmacroC99√√编译器自带
intmax_ttypeC99√√编译器自带
uintmax_ttypeC99√√编译器自带
INTMAX_MINmacroC99√√编译器自带
INTMAX_MAXmacroC99√√编译器自带
UINTMAX_MAXmacroC99√√编译器自带
intptr_ttypeC99√√编译器自带可选
uintptr_ttypeC99√√编译器自带可选
INTPTR_MINmacroC99√√编译器自带若定义 intptr_t
INTPTR_MAXmacroC99√√编译器自带
UINTPTR_MAXmacroC99√√编译器自带
PTRDIFF_MINmacroC99√√编译器自带
PTRDIFF_MAXmacroC99√√编译器自带
SIG_ATOMIC_MINmacroC99√√编译器自带
SIG_ATOMIC_MAXmacroC99√√编译器自带
SIZE_MAXmacroC99√√编译器自带
WCHAR_MINmacroC99√√编译器自带
WCHAR_MAXmacroC99√√编译器自带
WINT_MINmacroC99√√编译器自带
WINT_MAXmacroC99√√编译器自带
INT8_CmacroC99√√编译器自带
INT16_CmacroC99√√编译器自带
INT32_CmacroC99√√编译器自带
INT64_CmacroC99√√编译器自带
INTMAX_CmacroC99√√编译器自带
UINT8_CmacroC99√√编译器自带
UINT16_CmacroC99√√编译器自带
UINT32_CmacroC99√√编译器自带
UINT64_CmacroC99√√编译器自带
UINTMAX_CmacroC99√√编译器自带

B.22 <tgmath.h>(60 符号)​

说明:本表列出 <tgmath.h> 依 C99 §7.22 所定义的 60 个泛型宏(55 个实函数 + carg/cimag/conj/cproj/creal)。该头同时 #include <math.h> 与 <complex.h>,故这两个头的符号(HUGE_VAL、fpclassify、isgreater 等)经由 <tgmath.h> 亦可用,已在各自头下列出、此处不重复。

符号类别要求引入C90 方言C99 方言库实现备注
acostype-macroC99√√编译器自带实参泛型
acoshtype-macroC99√√编译器自带实参泛型
asintype-macroC99√√编译器自带实参泛型
asinhtype-macroC99√√编译器自带实参泛型
atantype-macroC99√√编译器自带实参泛型
atan2type-macroC99√√编译器自带实参泛型
atanhtype-macroC99√√编译器自带实参泛型
cbrttype-macroC99√√编译器自带实参泛型
ceiltype-macroC99√√编译器自带实参泛型
copysigntype-macroC99√√编译器自带实参泛型
costype-macroC99√√编译器自带实参泛型
coshtype-macroC99√√编译器自带实参泛型
erftype-macroC99√√编译器自带实参泛型
erfctype-macroC99√√编译器自带实参泛型
exptype-macroC99√√编译器自带实参泛型
exp2type-macroC99√√编译器自带实参泛型
expm1type-macroC99√√编译器自带实参泛型
fabstype-macroC99√√编译器自带实参泛型
fdimtype-macroC99√√编译器自带实参泛型
floortype-macroC99√√编译器自带实参泛型
fmatype-macroC99√√编译器自带实参泛型
fmaxtype-macroC99√√编译器自带实参泛型
fmintype-macroC99√√编译器自带实参泛型
fmodtype-macroC99√√编译器自带实参泛型
frexptype-macroC99√√编译器自带实参泛型
hypottype-macroC99√√编译器自带实参泛型
ilogbtype-macroC99√√编译器自带实参泛型
ldexptype-macroC99√√编译器自带实参泛型
lgammatype-macroC99√√编译器自带实参泛型
llrinttype-macroC99√√编译器自带实参泛型
llroundtype-macroC99√√编译器自带实参泛型
logtype-macroC99√√编译器自带实参泛型
log10type-macroC99√√编译器自带实参泛型
log1ptype-macroC99√√编译器自带实参泛型
log2type-macroC99√√编译器自带实参泛型
logbtype-macroC99√√编译器自带实参泛型
lrinttype-macroC99√√编译器自带实参泛型
lroundtype-macroC99√√编译器自带实参泛型
nearbyinttype-macroC99√√编译器自带实参泛型
nextaftertype-macroC99√√编译器自带实参泛型
nexttowardtype-macroC99√√编译器自带实参泛型
powtype-macroC99√√编译器自带实参泛型
remaindertype-macroC99√√编译器自带实参泛型
remquotype-macroC99√√编译器自带实参泛型
rinttype-macroC99√√编译器自带实参泛型
roundtype-macroC99√√编译器自带实参泛型
scalblntype-macroC99√√编译器自带实参泛型
scalbntype-macroC99√√编译器自带实参泛型
sintype-macroC99√√编译器自带实参泛型
sinhtype-macroC99√√编译器自带实参泛型
sqrttype-macroC99√√编译器自带实参泛型
tantype-macroC99√√编译器自带实参泛型
tanhtype-macroC99√√编译器自带实参泛型
tgammatype-macroC99√√编译器自带实参泛型
trunctype-macroC99√√编译器自带实参泛型
cargtype-macroC99√√编译器自带复参泛型
cimagtype-macroC99√√编译器自带复参泛型
crealtype-macroC99√√编译器自带复参泛型
conjtype-macroC99√√编译器自带复参泛型
cprojtype-macroC99√√编译器自带复参泛型

B.23 <wchar.h>(67 符号)​

符号类别要求引入C90 方言C99 方言库实现备注
wchar_ttypeC99√√编译器自带
size_ttypeC99√√编译器自带
mbstate_ttypeC99√√编译器自带
wint_ttypeC99√√编译器自带
struct tmtypeC99√√编译器自带前向声明即可
NULLmacroC99√√编译器自带§7.24.1p3: wchar.h 仅要求 NULL/WCHAR_MIN/WCHAR_MAX/WEOF 四宏
WCHAR_MAXmacroC99√√编译器自带
WCHAR_MINmacroC99√√编译器自带
WEOFmacroC99√√编译器自带
fwprintffuncC99隐藏√在库注: C95 已引入, C99 延续
fwscanffuncC99隐藏√在库注: C95 已引入, C99 延续
swprintffuncC99隐藏√在库注: C95 已引入, C99 延续
swscanffuncC99隐藏√在库注: C95 已引入, C99 延续
vfwprintffuncC99隐藏√在库注: C95 已引入, C99 延续
vfwscanffuncC99隐藏√在库注: C95 已引入, C99 延续
vswprintffuncC99隐藏√在库注: C95 已引入, C99 延续
vswscanffuncC99隐藏√在库注: C95 已引入, C99 延续
vwprintffuncC99隐藏√在库注: C95 已引入, C99 延续
vwscanffuncC99隐藏√在库注: C95 已引入, C99 延续
wprintffuncC99隐藏√在库注: C95 已引入, C99 延续
wscanffuncC99隐藏√在库注: C95 已引入, C99 延续
fgetwcfuncC99√√在库注: C95 已引入, C99 延续
fgetwsfuncC99√√在库注: C95 已引入, C99 延续
fputwcfuncC99√√在库注: C95 已引入, C99 延续
fputwsfuncC99√√在库注: C95 已引入, C99 延续
fwidefuncC99隐藏√在库注: C95 已引入, C99 延续;返值/改向偏差见 10.2 G5
getwcfuncC99√√在库注: C95 已引入, C99 延续
getwcharfuncC99√√在库注: C95 已引入, C99 延续
putwcfuncC99√√在库注: C95 已引入, C99 延续
putwcharfuncC99√√在库注: C95 已引入, C99 延续
ungetwcfuncC99√√在库注: C95 已引入, C99 延续
wcstodfuncC99√√在库注: C95 已引入, C99 延续
wcstoffuncC99隐藏√在库注: C95 已引入, C99 延续
wcstoldfuncC99隐藏√在库注: C95 已引入, C99 延续
wcstolfuncC99√√在库注: C95 已引入, C99 延续
wcstollfuncC99隐藏√在库注: C95 已引入, C99 延续
wcstoulfuncC99√√在库注: C95 已引入, C99 延续
wcstoullfuncC99隐藏√在库注: C95 已引入, C99 延续
wcscpyfuncC99√√在库注: C95 已引入, C99 延续
wcsncpyfuncC99√√在库注: C95 已引入, C99 延续
wcscatfuncC99√√在库注: C95 已引入, C99 延续
wcsncatfuncC99√√在库注: C95 已引入, C99 延续
wcscmpfuncC99√√在库注: C95 已引入, C99 延续
wcscollfuncC99√√在库注: C95 已引入, C99 延续
wcsncmpfuncC99√√在库注: C95 已引入, C99 延续
wcsxfrmfuncC99√√在库注: C95 已引入, C99 延续
wcschrfuncC99√√在库注: C95 已引入, C99 延续
wcscspnfuncC99√√在库注: C95 已引入, C99 延续
wcspbrkfuncC99√√在库注: C95 已引入, C99 延续
wcsrchrfuncC99√√在库注: C95 已引入, C99 延续
wcsspnfuncC99√√在库注: C95 已引入, C99 延续
wcsstrfuncC99√√在库注: C95 已引入, C99 延续
wcstokfuncC99√√在库注: C95 已引入, C99 延续
wcslenfuncC99√√在库注: C95 已引入, C99 延续
wcsftimefuncC99√√在库注: C95 已引入, C99 延续
btowcfuncC99√√在库注: C95 已引入, C99 延续
wctobfuncC99√√在库注: C95 已引入, C99 延续
mbsinitfuncC99√√在库注: C95 已引入, C99 延续
mbrlenfuncC99√√在库注: C95 已引入, C99 延续
mbrtowcfuncC99√√在库注: C95 已引入, C99 延续
mbsrtowcsfuncC99√√在库注: C95 已引入, C99 延续
wcsrtombsfuncC99√√在库注: C95 已引入, C99 延续
wmemcpyfuncC99√√在库注: C95 已引入, C99 延续
wmemmovefuncC99√√在库注: C95 已引入, C99 延续
wmemsetfuncC99√√在库注: C95 已引入, C99 延续
wmemcmpfuncC99√√在库注: C95 已引入, C99 延续
wmemchrfuncC99√√在库注: C95 已引入, C99 延续

B.24 <wctype.h>(22 符号)​

符号类别要求引入C90 方言C99 方言库实现备注
wint_ttypeC99√√编译器自带
wctype_ttypeC99√√编译器自带
wctrans_ttypeC99√√编译器自带
WEOFmacroC99√√编译器自带
iswalnumfuncC99√√在库
iswalphafuncC99√√在库
iswblankfuncC99隐藏√在库
iswcntrlfuncC99√√在库
iswdigitfuncC99√√在库
iswgraphfuncC99√√在库
iswlowerfuncC99√√在库
iswprintfuncC99√√在库
iswpunctfuncC99√√在库
iswspacefuncC99√√在库
iswupperfuncC99√√在库
iswxdigitfuncC99√√在库
iswctypefuncC99√√在库
towlowerfuncC99√√在库
towupperfuncC99√√在库
towctransfuncC99√√在库
wctypefuncC99√√在库
wctransfuncC99√√在库