如何打印出Visual Studio 2010的C标准?
How to print out C standard of Visual Studio 2010?
要了解 Visual Studio 2010 使用的 C++ 标准,我这样做:
std::cout << __cplusplus;
结果是 199711
所以 C++ 标准是 C++98。
了解Visual Studio 2010 C标准的类似方法是什么?
编辑: 我读过有关 C/C++ VS2010 标准的旧帖子,我知道 VS2010 不支持 C99,但这些帖子没有提到答案对于我的问题。
此时,如果定义了_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
for 1900 以检测该版本。
即使编译器支持像 __STDC_VERSION__
这样的预定义宏,您也必须这样做,因为它们不会(至少,它们不应该)增加版本号,直到它们完全支持适用的标准。换句话说,添加一些 C99 的功能不足以增加 __STDC_VERSION__
.
要了解 Visual Studio 2010 使用的 C++ 标准,我这样做:
std::cout << __cplusplus;
结果是 199711
所以 C++ 标准是 C++98。
了解Visual Studio 2010 C标准的类似方法是什么?
编辑: 我读过有关 C/C++ VS2010 标准的旧帖子,我知道 VS2010 不支持 C99,但这些帖子没有提到答案对于我的问题。
此时,如果定义了_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
for 1900 以检测该版本。
即使编译器支持像 __STDC_VERSION__
这样的预定义宏,您也必须这样做,因为它们不会(至少,它们不应该)增加版本号,直到它们完全支持适用的标准。换句话说,添加一些 C99 的功能不足以增加 __STDC_VERSION__
.