繁体   English   中英

使用纯C ++编译器与Visual C ++

[英]Using a pure C++ compiler versus Visual C++

我四处寻找这些问题的答案,但我没有运气。 所以,我想我会在这里发布它们以获得一些澄清。 如果这是重复的,请告诉我,我会关闭它。

好吧,说到这里,我想开始学习C ++。 我来自C#背景,我非常尊重Visual Studio以及它能做些什么。 现在,我的问题是。 Visual Studio的编译器与C ++相比,非Microsoft版本(如MinGW)的效果如何?

我的意思是这个。 我对微软没有任何不妥,但我真的想以“纯粹”的形式学习C ++,而不是任何特定的实现。 .NET Framework上的Visual C ++有多依赖? 是否可以通过Visual Studio创建“纯”C ++应用程序,而无需任何.NET使用或开销? Visual Studio编译器是否像使用C#/ VB一样将C ++编译为CIL,还是像其他人一样将其编译为完全?

感谢任何人都能提供的帮助!

Visual C ++编译器将C ++代码编译为与.NET框架无关的独立EXE。

获得.NET行李的唯一方法是将C ++编译为“托管”。

如果您创建一个新项目(文件|新建|新建项目)然后从项目类型的Visual C ++子菜单中选择“Win32”并选择“Win32控制台应用程序”Visual Studio将创建一个包含几个源文件的简单项目编译成一个小可执行文件。

大多数时候,Visual C ++与其他编译器非常相似。 避免使用#pragmas,microsoft libraries(MFC,ATL),你应该没问题。

编辑(感谢Cheeso) - Visual C ++与标准不同的文档

一般来说,我建议将boost库用于线程和网络,因为它们可以在许多平台上运行(即linux)。 此外,如果您的代码可以在GCC和Visual Studio中编译,那么您在保持可移植性方面做得很好。

VC ++的最新版本已经变得更加符合C ++标准,因此使用Visual Studio编写“纯”C ++并不是一个真正的问题,假设您不在Windows API,COM​​ +和ATL之外。 实际上,Visual Studio的文档非常丰富,有关标准库和STL的详细信息,因此它可以帮助您学习很多东西。 它无法教会你所有的东西,但它确实装载了大量可以移植到任何编译器的信息,并且它很容易在IDE内部访问。

如果您创建新解决方案,则应选择新的Win32 Project或Win32控制台应用程序,并选中“清空项目”选项。 然后,您可以添加main.cpp文件,并添加标准C ++代码。

如果您喜欢Visual Studio,请继续使用它来学习C ++ - 我没有使用过最新版本,但即使是前一版本也非常符合标准,C ++也是如此,我认为最新版本只能有变得更好了。 您可以在Visual Studio中拥有许多不同类型的项目,包括“控制台应用程序”,这是您可以在任何平台上制作的“普通香草”类型,还有许多其他类型,例如使用旧的win32 api的Windows应用程序,使用MFC或其他早于.NET的框架,使用“托管代码”的.NET等。

只需确保您始终在“控制台应用程序”项目中工作,并且您将非常接近于在其他平台和/或其他C ++ IDE上的运行方式。

如果您仅限于编写符合ANSI C ++的代码,那么您在VS中编写的内容将适用于其他编译器,直到您必须与图形界面或IO进行交互。 然后,您需要确保使用的是可移植的东西,例如OpenGL,而不是DirectX。

要设置项目,此处的步骤可能很有用: http//bytes.com/topic/net/answers/447572-strict-ansi-c

Microsoft Visual Studio 2005附带了一个非常好的,符合C ++ 98标准的纯C ++编译器。 如果您对纯C ++感兴趣,请不要忘记在项目设置中禁用语言扩展,这样你就可以了。 没有人会强迫你使用.NET框架,MFC或任何类似的东西。 只是纯粹的核心C ++语言和C ++标准库。

当然,就像任何其他编译器一样,它已经知道不合规问题,但总的来说,它再次出乎意料地好。 他们的编译器的旧版本(特别是MS VS 6.0)遭遇了许多不合规问题,甚至无法编译自己的头文件,禁用语言扩展。 在2005年的版本中,他们解决了很多这些问题。

创建标准Win32项目后,您可以更多地提高合规性。 在项目属性表中,有一个C / C ++类别,带有语言条目。 这列出了许多VC ++ 可能与标准不同的情况。 在这里,您需要关闭语言扩展,并打开“wchar_t as built-in type”,“for-loop conformance”和“RTTI support”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM