Visual Studio 2008 with c++11
Visual Studio 2008 with c++11
我能以某种方式让Visual C++2008拥有C++11库并使用C++11标准允许的所有好东西吗?
简而言之,这是不可能的。VS2008没有C++11支持,更换库会导致混乱。
长话短说,你也许可以做点什么:
- 使用另一个编译器:C++编译器支持(更新链接)
- 您可以升级您的visual studio,但即使是MSVC12(visual studio 2013)也不支持所有C++11标准
- 您可以将英特尔编译器嵌入到您的visual studio中。但英特尔也没有完全支持C++11,尽管如此,它的支持度超过了微软风投。这里(更新的链接现在提供了一般说明)介绍了如何嵌入英特尔编译器
- 更新:clang现在也可以与visualstudio一起使用,请参阅此处
- 更新:正如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细节,如可变模板和constexpr
、noexcept
。
如果您可以免费使用最新C++编译器附带的最新Visual Studio Community,那么使用Visual Studio 2008似乎完全是在浪费时间。但是,我非常喜欢Visual Studio 2008 IDE for C++。原因有很多,但速度可能是最明显的。诀窍是在VisualStudio2008IDE中使用最新的编译器和工具。事实上,它工作得很好,没有任何问题——我多年来一直在做这件事。我是这样做的:
- 删除
%LOCALAPPDATA%/Microsoft/VisualStudio/9.0/VCComponents.dat
- 编辑
<VS2008PATH>/VC/vcpackages/VCProjectEngine.dll.config
和<VS2008PATH>/VC/vcpackages/AMD64.VCPlatform.config
以反映Visual Studio 2019社区、Windows 10 SDK和任何您想要的额外库的路径
这就是你所需要的!提示:我使用2个环境变量来跟踪编译器版本号和SDK版本号CurrentUCRT=10.0.18362.0
、CurrentVCTools=14.24.28314
,需要时我会手动更改。例如,VCProjectEngine.dll.config
中的一行看起来像这样:Include="$(CurrentVS)VC/Tools/MSVC/$(CurrentVCTools)/include;"
。我对配置文件使用符号链接,这样我就不必在新的Visual Studio安装时重新创建它们。您也可以使用这种技术启用clang compiler
,如以下所示:
- 创建一个空目录,并将其按上面的搜索顺序放在第一位
- 在目录中建立到
clang-cl.exe
的符号链接,并将其命名为cl.exe
- 通过重命名符号链接来关闭和打开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中。唉,我还没有尝试移植它,所以我不能给你任何提示或技巧来帮助你这样做。
- Problems with std::cin.fail()
- MSVC是否支持C++11样式的属性而不是__declspec
- 在本书的示例代码中"introduction to 3d game programming with directx 11"
- 在 c++11 模式下使用 QtConcurrent::run with move only 参数
- Makefile with -std=c++11
- Building OpenCV 2.4.11 on Linux with `libopencv_ffmpeg.so`
- C++11 issue with GTest
- Qt 5.0 and c++11 with OSX Mountain Lion
- Travis CI with Clang 3.4 and C++11
- Visual Studio 2008 with c++11
- compiling boost 1.55 with c++11
- Qt Creator with Visual C++ 11
- Boost.Spirit with Boost.Variant 和 C++11:期待一个零参数构造函数
- icpc C++11 with gcc stdlib
- C++11 functionality with MinGW
- Confusion with c++11?
- Genymotion with Cocos2d-x v3.11
- Breaking Change in C++11 with make_pair(_Ty1&_Val1, const _Ty2& _Val2)
- Directx 11.0 with visual studio 2012 on windows 8 64 bit
- 使用Visual c++编译器2013年11月CTP With Origin c++ 11库