c - MS VS 2008 和 C99

标签 c visual-studio-2008 syntax c99 c89

我饶有兴趣地阅读了“C99 的支持程度如何?”一文。其中一条评论指出 Microsoft 不支持 C99。但是注释符号//适用于 VS 2008,并且此符号在 C99 中。我有两个问题:

  1. VS 2008 在多大程度上支持 C99?

  2. 在同一代码中可以将 C89 和 C99 语法混合在一起吗?因此,如果我用 C89 编写代码,然后添加注释//。这意味着我有混合编码。那么编译器在这种情况下会做什么呢?先用 c89 检查我的代码,然后用 C99 接受我使用//进行注释?

最佳答案

MSVC 在 C 模式下支持很少的 C99。它所做的一些事情(如'//'注释)实际上是他们添加到来自 C++ 的 C90 模式的扩展,这可能恰好也在 C99 中。编译 C 代码时,MSVC 将“//”注释视为 C90 的扩展,而不是将 C90 代码与 C99 代码混合在一起。

通过将 C 文件编译为 C++,您将获得“更好的”C99 支持 - 这样您将获得可以散布在范围内的 for 语句中的语句和变量声明的声明例如,for 循环。

Microsoft 似乎对向 MSVC 添加 C99 支持没有兴趣——即使他们将 C99 中的内容添加到 C++ 编译器模式(例如 stdint.h 被添加到 VS2010 中),因为一些额外的 C99 内容在 C++0x 中被添加到 C++。

关于c - MS VS 2008 和 C99,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2656080/

相关文章:

c# - 为什么从 Windows 安装程序安装后没有添加 app.config?

c++ - Visual Studio 断点宏修改一个值?

python - Python 控制 block 中的语法错误

c++ - 在 void 函数的末尾有一个空的 return 语句的原因吗?

c - 为什么编译器拒绝我的 execv 函数调用?

无法理解 K&P 编程实践一书中的 csvgetline.c 函数中解释的 char **

c++ - 用于发送电子邮件的命令行 C++ 程序

bash - $# 构造在 bash 中意味着什么?

c - 链表问题 - 循环迭代错误的节点

c - OpenMp 检测并行区域之前嵌套并行性中的线程数