use*_*783 9 c c99 visual-studio visual-studio-2017
最新版本的Visual Studio已经看到了对C99的改进支持.最新版本VS2017现在支持所有C99吗?
如果没有,C99的哪些功能仍然缺失?
Dai*_*Dai 15
没有.
https://docs.microsoft.com/en-us/cpp/visual-cpp-language-conformance
编译器对C99预处理程序规则的支持在Visual Studio 2017中是不完整的.支持可变参数宏,但预处理程序的行为中存在许多错误.
https://docs.microsoft.com/en-us/cpp/build/walkthrough-compile-ac-program-on-the-command-line
Visual C++ C编译器通常与ISO C99标准兼容,但不严格兼容.在大多数情况下,可移植的C代码将按预期编译和运行.Visual C++不支持ISO C11中的大多数更改.Visual C++编译器不推荐使用某些库函数和POSIX函数名.支持这些功能,但首选名称已更改.有关更多信息,请参阅CRT和编译器警告(级别3)C4996中的安全功能.
请记住,Visual C++最终是一个C++实现,而不是一个真正的C环境.兼容性是C和C++共享遗产的一个很好的副作用,但尽管语法上有相似之处,但两者是非常不同的语言.
大体上是的,尽管某些核心语言功能是不合规地实现的(有些存在错误,有些却缺失了)
restrict不支持限定符,而是支持限定符__restrict,但不完全相同void foo(int a[const]))以及static同一上下文中的关键字但是,每个新版本的Visual Studio都对C99支持进行了改进,因此显然不会冻结这项工作。
回答这个从2015年的问题有很多相关链接,包括MS路线图支持C的。