首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Visual Studio 2013支持的C99库(library)

Visual Studio 2013支持的C99库(library)

作者头像
用户7886150
修改于 2021-02-09 08:44:08
修改于 2021-02-09 08:44:08
1.1K0
举报
文章被收录于专栏:bit哲学院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 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C99标准里的inttypes.h头文件
其中的PRIu32是什么意思?上网搜了一下才知道是C99标准里新引入的宏定义,如下:
用户7886150
2021/02/20
1.6K0
c99的新功能
在ANSI的标准确立后,C语言的规范在一段时间内没有大的变动,然而C++在自己的标准化创建过程中继续发展壮大。《标准修正案一》在1994年为C语言创建了一个新标准,但是只修正了一些C89标准中的细节和增加更多更广的国际字符集支持。不过,这个标准引出了1999年ISO 9899:1999的发表。它通常被称为C99。C99被ANSI于2000年3月采用。
用户4645519
2020/09/08
4730
C语言定义数组时使用枚举作为数组的下标 ——c99功能
部分参考了https://blog.csdn.net/wq3028/article/details/76204690
用户4645519
2020/09/07
1.5K0
c语言_头文件
传统 C++ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include <assert.h> //设定插入点 #include <ctype.h> //字符处理 #include <errno.h> //定义错误码 #include <float.h> //浮点数处理 #include <fstream.h> //文件输入/输出 #include <iomanip.h> //参数化输入/输出 #include <iostream.h> //数据流输入/输出 #in
landv
2018/05/24
5.9K0
Data Representation - Integer
Integers, or whole number from elemental mathematics, are the most common and fundamental numbers used in the computers. It’s represented as fixed-point numbers, contrast to floating-point numbers in the machine. Today we are going to learn a whole bunch of way to encode it.
零式的天空
2022/03/28
4030
【C语言】C语言标准库大梳理(超全)
C89 标准库总共划分为 15 个部分,每个部分用一个头文件描述,C99 标准新增了 9 个(为了简化学习,这里暂不提 C11 标准),总共有 24 个头文件。
苏州程序大白
2022/04/14
2.9K0
【C语言】C语言标准库大梳理(超全)
C/C++常用头文件及函数汇总
C/C++头文件一览 C #include <assert.h>    //设定插入点 #include <ctype.h>     //字符处理 #include <errno.h>     //定义错误码 #include <float.h>     //浮点数处理 #include <iso646.h>        //对应各种运算符的宏 #include <limits.h>    //定义各种数据类型最值的常量 #include <locale.h>    //定义本地化C函数 #include
互联网金融打杂
2018/04/03
3K0
C语言参考手册pdf
《C语言参考手册(原书第5版)》是C语言的详尽参考手册,分为两部分:第一部分讨论了C语言的所有语言特征,包括词法、预处理机制、声明、类型、表达式、语句以及函数等基本语言特征;第二部分讨论了C语言的标准库,针对它们不同的功能分别进行详细介绍。为了帮助读者理解相关概念,《C语言参考手册(原书第5版)》在讨论C语言及其标准库的细节时,提供了许多实例和解释。第一部分的各章还提供了练习题和主要练习的解答,这些练习可帮助读者加深理解C语言的基本功能和特性。
用户7886150
2021/02/11
2.9K0
C/C++ 之 C发展史及 各标准特性说明
Tips:  1. 本人当初学习C/C++的记录。  2. 资源很多都是来自网上的,如有版权请及时告知!  3. 可能会有些错误。如果看到,希望能指出,以此共勉!
用户7886150
2021/02/17
1.1K0
C++特性使用建议
使用引用替代指针且所有不变的引用参数必须加上const。在C 语言中,如果函数需要修改变量的值,参数必须为指针,如int foo(int *pval),在 C++ 中,函数还可以声明引用参数int foo(int &val),定义引用参数防止出现 (*pval)++ 这样丑陋的代码。像拷贝构造函数这样的应用也是必需的,而且更明确,不接受 NULL 指针。
恋喵大鲤鱼
2018/08/06
2.1K0
C语言C99标准、C11标准新增加的特性
目前,最新的官方标准是C18,但需要注意的是,并非所有的编译器都已经完全实现了最新标准的所有特性,开发者在编写代码时应考虑目标编译器的实际支持情况。
DS小龙哥
2025/01/13
3830
C语言C99标准、C11标准新增加的特性
C11与C99的变化对比
C11标准是C语言标准的第三个版本,前一个标准版本是C99标准。2011年12月8日,国际标准化组织(ISO)和国际电工委员会
用户7886150
2021/02/17
2.4K0
c标准库总结
学习c语言十几年了,却从来没有完整的将c标准库看一看,我想在这一点上我是欠缺的。作为一个技术人员,无论什么时候都不能忘记自己最擅长的技能,这次借一个偶然的契机,翻一翻c标准库,希望以后自己在技术上越来越牛。
用户7886150
2021/02/25
1.6K0
C++11中 <cinttypes>的入门与精通
在 C++11 中,<cinttypes> 是一个非常重要的标准库头文件,它为处理整数类型提供了强大的支持。
码事漫谈
2025/07/01
1040
C++11中 <cinttypes>的入门与精通
【C语言】数据类型和变量
布尔类型的使⽤得包含头⽂件 <stdbool.h> 布尔类型变量的取值是:true或者false.
大耳朵土土垚
2024/03/13
1280
【C语言】数据类型和变量
【C语言】常用函数汇总表
通过这些表格和示例,你可以掌握C语言中各类常用函数的功能和使用方法。如果你需要进一步深入了解某个函数或需要更多示例,随时告诉我!
LuckiBit
2024/12/11
4800
【C语言】常用函数汇总表
C++/C++11中头文件cmath的使用
<math.h>是C标准函数库中的头文件。在C++中一般用<cmath>。此头文件中声明了一系列函数来计算常见的数学运算和变换:
用户7886150
2021/02/11
8870
C++与C的区别终于说清楚了!
在很大程度上,C++是C的超集,这意味着一个有效的C程序也是一个有效的C++程序。
C语言与CPP编程
2022/10/31
9930
C++与C的区别终于说清楚了!
c++ 常用函数
#include <strstrea.h>   //该类不再支持,改用<sstream>中的stringstream
用户7886150
2021/02/05
7140
C++ 特性使用建议
使用引用替代指针且所有不变的引用参数必须加上const。在C 语言中,如果函数需要修改变量的值,参数必须为指针,如int foo(int *pval),在 C++ 中,函数还可以声明引用参数int foo(int &val),定义引用参数防止出现 (*pval)++ 这样丑陋的代码。像拷贝构造函数这样的应用也是必需的,而且更明确,不接受 NULL 指针。
恋喵大鲤鱼
2022/12/02
1.9K0
相关推荐
C99标准里的inttypes.h头文件
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档