前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Visual Studio 2013支持的C99库(library)

Visual Studio 2013支持的C99库(library)

作者头像
用户7886150
修改2021-02-09 16:44:08
9450
修改2021-02-09 16:44:08
举报
文章被收录于专栏:bit哲学院

参考链接: C++ fegetexceptflag()

C99已经发布多年,但微软的Visual C++尚未完整支持C99。我偶然看到VS官方博客上一篇介绍C99库支持的文章,特翻译了一下,希望对大家有帮助。水平有限,翻译不当之处,欢迎指正。 

大家好,我是Pat Brenner,Visual C++库团队的开发人员。在这篇博文中,我想分享添加到Visual Studio 2013中的 C运行时库(run-time library)对C99支持的一些信息。 

总的来说,我们为如下头文件中缺失的函数增加了声明(declarations)和实现(implementations):math.h,ctype.h,wctype.h,tdio.h, stdlib.h, and wchar.h。我们也新增了一些头文件,包括complex.h,stdbool.h,fenv.h,和 inttypes.h,并且增加了声明在它们中的所有函数的实现。此外,我们增加了新的C ++ wrapper headers(ccomplex, cfenv, cinttypes, ctgmath)并且更新了其他的一部分(ccomplex, cctype, clocale, cmath, cstdint, cstdio, cstring, cwchar, and cwctype)。 

大部分工作(除了stdbool.h和fenv.h外的所有C头文件)已经及时在Visual Studio 2013 Preview发布前完成并且已经可用,但是剩下的(stdbool.h, fenv.h 和 the C++ wrapper headers)将会在Visual Studio 2013 RTM中完成并发布。 

更详细的说,这些是我们增加的声明和实现,根据声明它们的头文件分组: 

 math.h: 

   float_t, double_t, fpclassify, isfinite isinf, isnan, isnormal, signbit HUGE_VALF, HUGE_VALL, INFINITY, NAN, MATH_ERRNO, MATH_ERREXCEPT FP_INFINITE, FP_NAN, FP_NORMAL, FP_SUBNORMAL, FP_ZERO, FP_ILOGB0, FP_ILOGBNAN acosh, acoshf, acoshl, asinh, asinhf, asinhl, atanh, atanhf, atanhl exp2, exp2f, exp2l, expm1, expm1f, expm1l ilogb, ilogbf, ilogbl, logb, logbf, logbl, log1p, log1pf, log1pl, log2, log2f, log2l scalbn, scalbnf, scalbnl, scalbln, scalblnf, scalblnl cbrt, cbrtf, cbrtl, erf, erff, erfl, erfc, erfcf, erfcl lgamma, lgammaf, lgammal, tgamma, tgammaf, tgammal nearbyint, nearbyintf, nearbyintl, nan, nanf, nanl rint, rintf, rintl, lrint, lrintf, lrintl, llrint, llrintf, llrintl round, roundf, roundl, lround, lroundf, lroundl, llround, llroundf, llroundl trunc, truncf, truncl, remainder, remainderf, remainder, remquo, remquof, remquol nextafter, nextafterf, nextafterl, nexttoward, nexttowardf, nexttowardl fdim, fdimf, fdiml, fmax, fmaxf, fmaxl, fmin, fminf, fminl, fma, fmaf, fmal  complex.h: 

   cacos, cacosf, cacosl, casin, casinf, casinl, catan, catanf, catanl ccos, ccosf, ccosl, csin, csinf, csinl, ctan, ctanf, ctanl cacosh, cacoshf, cacoshl, casinh, casinhf, casinhl, catanh, catanhf, catanhl ccosh, ccoshf, ccoshl, csinh, csinhf, csinhl, ctanh, ctanhf, ctanhl cexp, cexpf, cexpl, clog, clogf, clogl, cabs, cabsf, cabsl cpow, cpowf, cpowl, csqrt, csqrtf, csqrtl, carg, cargf, cargl cimag, cimagf, cimagl, conj, conjf, conjl, cproj, cprojf, cprojl, creal, crealf, creall  fenv.h: 

   fegetenv, fesetenv, feupdateenv, fegetexceptflag, fesetexceptflag feclearexcept, feholdexcept, fetestexcept, feraiseexcept  inttypes.h: 

   PRIi8, PRIi16, PRIi32, PRIi64, PRIiMAX, PRIiPTR, PRIiLEAST8, PRIiLEAST16, PRIiLEAST32, PRIiLEAST64, PRIiFAST8, PRIiFAST16, PRIiFAST32, PRIiFAST64 PRIo8, PRIo16, PRIo32, PRIo64, PRIoMAX, PRIoPTR, PRIoLEAST8, PRIoLEAST16, PRIoLEAST32, PRIoLEAST64, PRIoFAST8, PRIoFAST16, PRIoFAST32, PRIoFAST64 PRIu8, PRIu16, PRIu32, PRIu64, PRIuMAX, PRIuPTR, PRIuLEAST8, PRIuLEAST16, PRIuLEAST32, PRIuLEAST64, PRIuFAST8, PRIuFAST16, PRIuFAST32, PRIuFAST64 PRIx8, PRIx16, PRIx32, PRIx64, PRIxMAX, PRIxPTR, PRIxLEAST8, PRIxLEAST16, PRIxLEAST32, PRIxLEAST64, PRIxFAST8, PRIxFAST16, PRIxFAST32, PRIxFAST64 PRIX8, PRIX16, PRIX32, PRIX64, PRIXMAX, PRIXPTR, PRIXLEAST8, PRIXLEAST16, PRIXLEAST32, PRIXLEAST64, PRIXFAST8, PRIXFAST16, PRIXFAST32, PRIXFAST64 SCNd8, SCNd16, SCNd32, SCNd64, SCNdMAX, SCNdPTR, SCNdLEAST8, SCNdLEAST16, SCNdLEAST32, SCNdLEAST64, SCNdFAST8, SCNdFAST16, SCNdFAST32, SCNdFAST64 SCNi8, SCNi16, SCNi32, SCNi64, SCNiMAX, SCNiPTR, SCNiLEAST8, SCNiLEAST16, SCNiLEAST32, SCNiLEAST64, SCNiFAST8, SCNiFAST16, SCNiFAST32, SCNiFAST64 SCNo8, SCNo16, SCNo32, SCNo64, SCNoMAX, SCNoPTR, SCNoLEAST8, SCNoLEAST16, SCNoLEAST32, SCNoLEAST64, SCNoFAST8, SCNoFAST16, SCNoFAST32, SCNoFAST64 SCNu8, SCNu16, SCNu32, SCNu64, SCNuMAX, SCNuPTR, SCNuLEAST8, SCNuLEAST16, SCNuLEAST32, SCNuLEAST64, SCNuFAST8, SCNuFAST16, SCNuFAST32, SCNuFAST64 SCNx8, SCNx16, SCNx32, SCNx64, SCNxMAX, SCNxPTR, SCNxLEAST8, SCNxLEAST16, SCNxLEAST32, SCNxLEAST64, SCNxFAST8, SCNxFAST16, SCNxFAST32, SCNxFAST64 SCNX8, SCNX16, SCNX32, SCNX64, SCNXMAX, SCNXPTR, SCNXLEAST8, SCNXLEAST16, SCNXLEAST32, SCNXLEAST64, SCNXFAST8, SCNXFAST16, SCNXFAST32, SCNXFAST64 imaxabs, imaxdiv, strtoimax, strtoumax, wcstoimax, wcstoumax  ctype.h 

   isblank  wctype.h 

   iswblank  float.h 

   DECIMAL_DIG, FLT_EVAL_METHOD  stdarg.h 

   va_copy  stdbool.h 

   bool, true, false, __bool_true_false_are_defined  stdio.h 

   vscanf, vfscanf, vsscanf  stdlib.h 

   atoll, strtof, strtold, strtoll, strtoull  wchar.h 

   vwscanf, vfwscanf, vswscanf, wcstof, wcstold, wcstoll, wcstoull  

我们知道这并不是对C99库函数的完整支持,尽我们的理解,缺少的部分如下: 

 tgmath头文件缺失,这个头文件需要C编译器的支持。 

   注意,ctgmath 头文件已经被添加——这是有可能的,因为这个头文件不需要tgmath.h头文件,只需要ccomplex 和 cmath headers头文件  uchar.h偷文件缺失。这来自the C Unicode TR. printf家族中的一些格式说明符尚不支持 stdio.h和wcahr.h中的snprintf and snwprintf 函数缺失。 

我希望你觉得这些信息有用,我们尽力优先实现我们认为重要的函数。 

Pat Brenner, Visual C++ Libraries Development Team

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档