【问题标题】:How to print out C standard of Visual Studio 2010?如何打印出 Visual Studio 2010 的 C 标准?
【发布时间】:2016-02-14 13:15:56
【问题描述】:

要了解 Visual Studio 2010 使用的 C++ 标准,我这样做:

std::cout << __cplusplus;

结果是199711,所以 C++ 标准是 C++98。

Visual Studio 2010的C标准有什么类似的了解方式?

编辑:我读过关于 VS2010 的 C/C++ 标准的旧帖子,我知道 VS2010 不支持 C99,但这些帖子没有提到我的问题的答案。

【问题讨论】:

  • 您是否尝试检查 __STDC_VERSION__ 的值?哦,首先检查是否定义了 __STDC__。
  • @2501 STDC_VERSION 未定义
  • 它实际上是 C++03,不改变号码往往发生在支持电话号码为 1-800 的公司。 2010 年实现 C89。
  • @IlDivin - 1989 年没有必要区分不同的标准,因此没有添加这样的功能。 VS2015 接近 C99,这就是MS已经走了多远。

标签: c visual-studio-2010


【解决方案1】:

此时,如果定义了_MSC_VER,则假定仅支持C89。 None of Microsoft's compilers officially support beyond the C89 standard. 早在 1989 年,当 ANSI C 标准第一次发布时,没有理由检查它支持的版本——只有一个版本。 C89 这个名称本身就是一个新词。

如果 Bo 关于 VS 2015 接近 C99 支持的评论是正确的(我不确定,我还没有安装 VS 2015,而且你似乎也不关心问题中的那个版本),你可以测试_MSC_VER 为 1900 检测该版本。

即使编译器支持像 __STDC_VERSION__ 这样的预定义宏,您也必须这样做,因为它们不会(至少,它们不应该)增加版本号,直到它们完全支持适用的标准。换句话说,添加一些 C99 的功能不足以增加 __STDC_VERSION__

【讨论】:

  • 我打印了_MSC_VER,定义为1600,是什么意思?它是否代表 C 标准?
  • 不,它会告诉你微软编译器的版本,主要-次要格式。 1600 == 版本 16.0 == Visual C++ 16 == Visual Studio 2010
  • 我明白了。你的回答让我满意
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-30
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
相关资源
最近更新 更多