5.44 GCC提供的其他内置函数
GCC 提供了大量除上述之外的内置函数。其中一些是在处理异常或可变长度参数列表时内部使用的,并且不会在此处记录,因为它们可能会不时更改;我们不建议一般使用这些功能。
其余函数用于优化目的。
GCC 包括标准 C 库中许多函数的内置版本。即使您指定了 -fno-builtin 选项,带有 _ builtin前缀的版本将始终被视为与 C 库函数具有相同的含义。(请参阅 C 方言选项)其中许多功能仅在某些情况下进行了优化;如果它们在特定情况下未优化,则会发出对库函数的调用。
在严格的 ISO C 模式(-ansi、-std=c89 或 -std=c99)之外,函数 _exit、alloca、bcmp、bzero、dcgettext、dgettext、dremf、dreml、drem、exp10f、exp10l、exp10、ffsll、ffsl、 ffs, fprintf_unlocked, fputs_unlocked, gammaf, gammal, gamma, gettext, index, isascii, j0f, j0l, j0, j1f, j1l, j1, jnf, jnl, jn, mempcpy, pow10f, pow10l, pow10, printf_unlocked, rindex, scalbf, scalbl、scalb、signbit、signbitf、signbitl、significandf、significandl、significand、sincosf、sincosl、sincos、stpcpy、strdup、strfmon、toascii、y0f、y0l、y0、y1f、y1l、y1、ynf、ynl和yn作为内置函数。所有这些函数都有相应的版本前缀_builtin,即使在严格的 C89 模式下也可以使用。
ISO C99 函数 _Exit, acoshf, acoshl, acosh, asinhf, asinhl, asinh, atanhf, atanhl, atanh, cabsf, cabsl, cabs, cacosf, cacoshf, cacoshl, cacosh, cacosl, cacos, cargf, cargl, carg, casinf, casinhf, casinhl, casinh, casinl, casin, catanf, catanhf, catanhl, catanh, catanl, catan, cbrtf, cbrtl, cbrt, ccosf, ccoshf, ccoshl, ccosh, ccosl, ccos, cexpf, cexpl, cexp, cimagf, cimagl, cimag, conjf, conjl, conj, copysignf, copysignl, copysign, cpowf, cpowl, cpow, cprojf, cprojl, cproj, crealf, creall, creal, csinf, csinhf, csinhl, csinh, csinl, csin, csqrtf, csqrtl, csqrt, ctanf, ctanhf, ctanhl, ctanh, ctanl, ctan, erfcf, erfcl, erfc, erff, erfl, erf, exp2f, exp2l, exp2, expm1f, expm1l, expm1, fdimf, fdiml, fdim, fmaf, fmal, fmaxf , fmaxl,
最大, fma, fminf, fminl, fmin, hypotf, hypotl, hypot, ilogbf, ilogbl, ilogb, imaxabs, isblank, iswblank, lgammaf, lgammal, lgamma, llabs, llrintf, llrintl, llrint, llroundf, llroundl, llround, log1pf, log1pl ,log1p,log2f,log2l,log2,logbf,logbl,logb,lrintf,lrintl,lrint,lroundf,lroundl,lround,nearthintf,nearthintl,nearthint,nextafterf,nextafterl,nextafter,nexttowardf,nexttowardl,nexttoward,residualf,remainderl,residual , remquof, remquol, remquo, rintf, rintl, rint, roundf, roundl, round, scalblnf, scalblnl, scalbln, scalbnf, scalbnl, scalbn, snprintf, tgammaf, tgammal, tgamma, truncf, truncl, trunc, vfscanf, vscanf, vsnprintf和 vsscanf 作为内置函数处理,除了严格的 ISO C90 模式(-ansi 或 -std=c89)。