首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Visual 2017完全支持C99吗?

Visual 2017完全支持C99吗?
EN

Stack Overflow用户
提问于 2018-02-05 02:44:09
回答 2查看 13K关注 0票数 13

最近版本的Visual改进了对C99的支持。最新版本的VS2017现在支持所有的C99吗?

如果没有,C99的哪些功能仍然缺失?

EN

回答 2

Stack Overflow用户

发布于 2018-02-05 02:48:19

不是的。

https://learn.microsoft.com/en-us/cpp/visual-cpp-language-conformance

在VisualStudio2017中,编译器对C99预处理规则的支持是不完整的。支持各种宏,但在预处理器的行为中存在许多错误。

https://learn.microsoft.com/en-us/cpp/build/walkthrough-compile-a-c-program-on-the-command-line

Visual C++ C编译器通常与C99标准兼容,但并不严格兼容。在大多数情况下,便携C代码将按预期的方式编译和运行。Visual C++不支持ISO C11中的大多数更改。VisualC++编译器不推荐某些库函数和POSIX函数名。函数是受支持的,但首选名称已经更改。有关更多信息,请参见CRT和编译器警告(级别3) C4996中的安全功能。

请记住,VisualC++最终是一个C++实现,而不是真正的C环境。兼容性是C和C++的共同传统的一个很好的副作用,但是尽管这两种语言在句法上有很大的相似之处,但它们是非常不同的语言。

票数 20
EN

Stack Overflow用户

发布于 2018-02-05 03:53:55

在很大程度上,是的,尽管一些核心语言特性的实现不符合要求(有些有bug,有些缺少)。

  • 不支持可变长度数组(尽管它们现在是官方可选的)
  • 不支持restrict限定符,而是支持__restrict,但它并不完全相同。
  • 函数参数中数组声明中的顶级限定符(例如void foo(int a[const]))和关键字static在相同的上下文中不受支持。

但是,Visual的每一个新版本都带来了对C99支持的改进,因此这项工作并没有明显冻结。

对2015年this问题的回答有许多相关链接,包括支持C的MS路线图。

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

https://stackoverflow.com/questions/48615184

复制
相关文章

相似问题

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