2015-01-07 61 views
19

我看到VS2013增加了對C99的大量主要核心語言功能的支持。現在它支持複合文字,指定初始值,可變宏,交錯聲明和聲明等等。什麼是VS2013中C99支持的官方狀態?

這表明VS開發人員在Visual Studio中向C99支持採取了嚴肅的步驟。然而,這些功能中的一部分並不是C++語言的一部分,這似乎與以前宣佈的開發策略有明顯的偏差(例如「VS C編譯器只支持那些也是C++一部分的C99功能」)。

那麼,有什麼官方或半官方的字?我似乎無法在網上找到任何明確的。這些C99功能是否正式宣佈? VS有沒有承諾繼續支持C99的C99?或者這只是某種「無賴」的非官方發展?

+0

Herb Sutter提到他們增加了足夠的能力來編譯VS2013上的ffmpeg,不知道他們是如何提出這個要求的。 – Praetorian

+0

http://msdn.microsoft.com/en-us/library/hh409293.aspx – BLUEPIXY

+0

我鏈接到他們最近的C99 [這裏](http://stackoverflow.com/a/18521417/1708801) –

回答

10

這方面有來自微軟開發的幾個政府官員的討論中,C++ Conformance Roadmap它說:

赫伯還宣佈,爲響應客戶的要求,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指定itializers

  • C99變量聲明

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

在這篇博客文章中,我想分享的C99 支持的一些信息添加到C運行Visual Studio 2013中的時間庫。

結束於:

我們知道這並不是完全支持C99庫 函數。據我們所知,缺件是 這些:

  • tgmath.h頭缺失。該頭文件需要C編譯器支持。 請注意,ctgmath頭添加 - 這是可能的,因爲該頭不需要tgmath.h頭 - 只有 ccomplex和cmath頭。
  • 缺少uchar.h標頭。這是來自C Unicode TR。 尚未支持printf系列中的幾種格式說明符。
  • stdio.h和wchar.h中缺少snprintf和snwprintf函數。

這是有點更有趣,因爲STL積極解決意見的博客,他們是很難總結,但我們可以看到未來的增加將取決於競爭的重點。

感謝cremno您指出另一篇博客中C Runtime (CRT) Features, Fixes, and Breaking Changes in Visual Studio 14 CTP1它說:

在Visual Studio「14」 CTP,我們全面實施C99 標準庫,與任何庫的功能,不同的是 取決於編譯器尚未支持的編譯器功能(特別是,<tgmath.h>未實現)。有 無疑是一些剩餘的一致性問題 - 我們知道幾個, 包括_Exit丟失和wcstok有錯誤的簽名, ,我們正在努力解決這些問題。如果您發現錯誤或缺少 功能,請在Microsoft Connect上報告。如果您現在報告 錯誤,我們很可能會在 RTM之前解決它們。

並且有很多細節不容易總結。

+2

順便說一下,在VS2015''和'snprintf()'是可用的。還有其他C99相關的更改。查看[this](http://blogs.msdn.com/b/vcblog/archive/2014/06/18/crt-features-fixes-and-breaking-changes-in-visual-studio-14-ctp1.aspx )較舊的博客文章。 – cremno

+0

@cremno謝謝你!我已經仔細研究了這個問題,以便對VLA做出更老的回答,並且錯過了這個答案。 –

相關問題