Visual Studio 2008 with c++11

Visual Studio 2008 with c++11

本文关键字:c++11 with 2008 Studio Visual      更新时间:2023-10-16

我能以某种方式让Visual C++2008拥有C++11库并使用C++11标准允许的所有好东西吗?

简而言之,这是不可能的。VS2008没有C++11支持,更换库会导致混乱。

长话短说,你也许可以做点什么:

  1. 使用另一个编译器:C++编译器支持(更新链接
  2. 您可以升级您的visual studio,但即使是MSVC12(visual studio 2013)也不支持所有C++11标准
  3. 您可以将英特尔编译器嵌入到您的visual studio中。但英特尔也没有完全支持C++11,尽管如此,它的支持度超过了微软风投。这里(更新的链接现在提供了一般说明)介绍了如何嵌入英特尔编译器
  4. 更新:clang现在也可以与visualstudio一起使用,请参阅此处
  5. 更新:正如Melebius在评论中所说,MSVC19(VS2015)最终支持了大部分C++11标准。。。支持C++11/14/17功能(现代C++)

如果您一直在使用MSVC 2008或2010,我已经设法为它实现了各种C++11(以及一些可能的C++14)功能,作为cxxomfort后台端口库的一部分。当然,依赖lexer/parser支持的功能(如可变模板)是无法模拟的,但在大多数情况下,它允许我在MSVC 2008 Express(我的主要Windows目标)中编写向前兼容的代码。

然而,我们的想法是使用另一个编译器。对于Windows XP,GCC支持高达4.6(例如:Mingw安装程序),它带来了大多数重要的C++11细节,如可变模板和constexprnoexcept

如果您可以免费使用最新C++编译器附带的最新Visual Studio Community,那么使用Visual Studio 2008似乎完全是在浪费时间。但是,我非常喜欢Visual Studio 2008 IDE for C++。原因有很多,但速度可能是最明显的。诀窍是在VisualStudio2008IDE中使用最新的编译器和工具。事实上,它工作得很好,没有任何问题——我多年来一直在做这件事。我是这样做的:

  1. 删除%LOCALAPPDATA%/Microsoft/VisualStudio/9.0/VCComponents.dat
  2. 编辑<VS2008PATH>/VC/vcpackages/VCProjectEngine.dll.config<VS2008PATH>/VC/vcpackages/AMD64.VCPlatform.config以反映Visual Studio 2019社区、Windows 10 SDK和任何您想要的额外库的路径

这就是你所需要的!提示:我使用2个环境变量来跟踪编译器版本号和SDK版本号CurrentUCRT=10.0.18362.0CurrentVCTools=14.24.28314,需要时我会手动更改。例如,VCProjectEngine.dll.config中的一行看起来像这样:Include="$(CurrentVS)VC/Tools/MSVC/$(CurrentVCTools)/include;"。我对配置文件使用符号链接,这样我就不必在新的Visual Studio安装时重新创建它们。您也可以使用这种技术启用clang compiler,如以下所示:

  1. 创建一个空目录,并将其按上面的搜索顺序放在第一位
  2. 在目录中建立到clang-cl.exe的符号链接,并将其命名为cl.exe
  3. 通过重命名符号链接来关闭和打开clang编译器

在VS2008中,通过使用Boost可以获得C++11标准库的一些基础知识,Boost还有很多更有用的工具。

如果您可以升级到MSVC++2010,它实现了标准的有限子集。早在2011年,Marc Gregoire就制作了一个漂亮的PowerPoint幻灯片集,展示了MS Visual C++2010中支持的C11功能。

(作为一个在家里也只能使用XP的人,我能感受到你的痛苦。)

如果您不需要构建MS Windows、CLI或MFC应用程序,您可以考虑G++,它在32位版本中具有相当广泛的C11标准子集。如果你没有,你可以在他们的网站上下载CYGWIN应用程序/DLL。

正如上游提到的,您可以尝试将更兼容的编译器移植到MSVC中。唉,我还没有尝试移植它,所以我不能给你任何提示或技巧来帮助你这样做。