【问题标题】:What is the official status of C99 support in VS2013?VS2013中C99支持的官方状态是什么?
【发布时间】:2015-03-05 18:11:34
【问题描述】:

我看到VS2013增加了对C99的大量主要核心语言特性的支持。现在它支持复合文字、指定初始化器、可变参数宏、交错声明和语句,仅举几例。

这表明 VS 开发人员在 Visual Studio 中朝着 C99 支持迈出了重要的一步。然而,其中一些特性并不是 C++ 语言的一部分,这似乎与之前宣布的开发策略有明显的偏差(例如,“VS C 编译器将只支持那些也是 C++ 一部分的 C99 特性”)。

那么,关于发生了什么,是否有任何官方或半官方的消息?我似乎无法在网上找到任何确定的东西。这些 C99 功能是正式宣布的吗?是否有任何承诺继续在 VS 中支持 C99?或者这只是某种“流氓”的非官方开发?

【问题讨论】:

  • Herb Sutter 提到他们添加的内容足以在 VS2013 上编译 ffmpeg,不知道他们是如何提出这个要求的。
  • 我链接到他们最近的 C99 here
  • 他们在前端为 C++1xyz 合规性做了大量工作。触摸设计为使用 256KB 内存运行的古老位。毫无疑问,这开辟了一些新的机会:)

标签: c visual-studio c99


【解决方案1】:

Microsoft 开发人员对此进行了一些公开的官方讨论,C++ Conformance Roadmap 表示:

Herb 还宣布,应客户要求,RTM 版本还将包括一些战术 C99 语言扩展,当 编译 C 代码,以便一些流行的社区库(包括 FFmpeg) 现在可以使用 Visual C++ 2013 进行编译。

因此,这有官方支持,但具有战略意义,从以下文章中我可以看出,更多支持将不得不与其他优先事项竞争。

我们有C++11/14 STL Features, Fixes, And Breaking Changes In VS 2013 Blog entry by STL:

此外,一些 C99 核心语言功能将在 2013 年 RTM:

  • C99 _Bool

  • C99 复合文字

  • C99 指定初始化器

  • C99 变量声明

C99 library support in Visual Studio 2013 blog entry by Pat Brenner 打开:

在这篇博文中,我想分享一些关于 C99 的信息 添加到 Visual Studio 2013 中的 C 运行时库的支持。

并以:

结尾

我们知道这不是对 C99 库的完全支持 职能。据我们所知,缺失的部分是 这些:

  • tgmath.h 标头丢失。此头文件需要 C 编译器支持。 请注意,添加了 ctgmath 标头 — 这是可能的,因为该标头不需要 tgmath.h 标头 — 只有 ccomplex 和 cmath 标头。
  • uchar.h 标头丢失。这是来自 C Unicode TR。 尚不支持 printf 系列中的几个格式说明符。
  • stdio.h 和 wchar.h 中缺少 snprintf 和 snwprintf 函数。

这有点更有趣,因为 STL 积极地将 cmets 发送到博客并且它们很难总结,但我们可以看到未来的添加将取决于竞争的优先级。

感谢 cremno 指出另一篇博文 C Runtime (CRT) Features, Fixes, and Breaking Changes in Visual Studio 14 CTP1,其中写道:

在 Visual Studio“14”CTP 中,我们完全实现了 C99 标准库,但任何库功能除外 依赖于 Visual C++ 尚不支持的编译器功能 编译器(值得注意的是,<tgmath.h> 未实现)。有 毫无疑问,还有一些剩余的一致性问题——我们知道一些, 包括缺少 _Exit 和 wcstok 的签名错误, 我们正在努力解决这些问题。如果您发现错误或缺失 功能,请务必在 Microsoft Connect 上报告。如果您报告错误 现在,我们很有可能能够在之前修复它们 RTM。

并且有很多细节无法简单概括。

【讨论】:

  • 顺便说一句,在VS2015中<uchar.h>snprintf()是可用的。还有其他与 C99 相关的更改。请参阅 this 较早的博客文章。
  • @cremno 谢谢!我曾多次研究过这个关于 VLA 的旧答案,但错过了那个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-30
  • 2015-06-06
  • 1970-01-01
  • 2019-12-30
  • 2015-04-28
  • 1970-01-01
相关资源
最近更新 更多