首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Visual Studio中有没有在C99和C11 C标准之间切换的选项?

在Visual Studio中有没有在C99和C11 C标准之间切换的选项?
EN

Stack Overflow用户
提问于 2018-02-26 13:13:42
回答 2查看 17.2K关注 0票数 17

我是Visual Studio环境的新手,我正在使用VS2017专业版。我想用C语言编写简单的程序,并同时使用c99c11标准进行编译。在Visual Studio中,我只能找到C++标准的编译器开关。

我们如何告诉visual studio环境我们希望用c99c11 C标准编译当前代码。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-26 15:51:00

可视化C++支持的唯一“模式”是:符合C++14的/std:c++14模式(默认),支持C++17的/std:c++17模式,这在VS 2017 (15.6)中还不是很完整。还有一种/std:c++latest模式,在将来的某个时刻,它将在C++20中包含一些东西。所有这些都应该与/permissive-结合起来,以提高一致性。

为了满足C++11标准库的一致性,Visual C++必须支持C99标准库,这与支持C99语言一致性不是一回事。

在某种程度上,为了满足C++17标准库的要求,Visual C++必须支持C11标准库,这与C11语言一致性不是一回事。

请参阅C++ Standards Conformance from MicrosoftC++11/14 STL Features, Fixes, And Breaking Changes In VS 2013

在帖子MSVC: The best choice for Windows中有一个评论线程,其中Visual C++项目经理接受了真正的'C11‘一致性的问题。

嗨,奥努尔

虽然我们首先关注的是C++一致性,但C一致性已经在我们的雷达上了。

我们在VS 2013中做了一些关于C符合性的工作,尽管我们没有太多地宣传它。这项工作包括:

-- C99 _Bool

- C99复合文字

- C99指定的初始化器

- C99变量声明

我们的C++一致性工作已经接近尾声。最后一项是一致性预处理器:这是C和C++共享的特性。预处理器将标志着我们C一致性推送的开始,以及我们C++98/11/14一致性工作的结束。

安德鲁

更新: VS 2019 (16.8)将包括/std:c11/std:c17标准交换机。参见this blog post。由于MSVC编译器不支持可变长度数组(VLA),因此它不要求符合C99。请注意,这些开关启用this blog post中介绍的新C99预处理器。

票数 15
EN

Stack Overflow用户

发布于 2018-02-28 19:53:16

Visual Studio主要是一个C++编译器。在"C模式“中,它遵循自1990年以来的一个古老的C标准。

在2013-2015年左右,他们做出了一些努力,支持的不是当前的C标准,而是1999年发布的前一个C标准("C99"),大约在发布16年后。然而,符合这个标准的工作还没有完成。

我相信编译器还支持当前C语言("C11")的一些选定特性,例如可选的边界检查库。该标准已推出7年,但尚未完全支持。

因此,如果你需要一个符合标准的C语言编译器,你应该寻找其他的替代方案。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48981823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档