visual C++/CLI和编译器选择

visual C++/CLI and compiler choice

本文关键字:编译器 选择 CLI C++ visual      更新时间:2023-10-16

Visual Studio是否只生成C++/CLI?有人告诉我要像躲避瘟疫一样躲避C++/CLI和Microsoft编译器。

我想学习如何编写独立于平台的软件,那么你推荐什么"真正的C++"编译器呢?(从我目前收集的信息来看,C++/CLI似乎会将我绑定到Windows,因为它依赖于一些Windows库)

Visual Studio是否只生成C++/CLI?

不,Visual C++编译器支持ISO C++03(有一些一致性问题)和许多C++11特性。它还支持C++/CLI和(在即将推出的版本中)C++/CX,但不要求您使用这两种语言扩展。

我想学习如何编写独立于平台的软件,那么你推荐什么"真正的C++"编译器呢?

确保C++代码不依赖于某个特定编译器的功能的最佳方法是使用多个编译器进行编译。

Visual Studio能够编译非托管C++以及C++/CLI(托管C++)。您计划支持的每个平台都有自己喜欢的编译器,但大多数平台都支持gcc(包括使用MinGW或Cygwin的Windows)。

首先,VC++编译器根本不会产生C++/CLI。C++/CLI是一种描述程序的文本语言,而不是编译器输出。

使用/clr选项时,它接受标准C++或C++/CLI,并生成.NET MSIL代码("纯"MSIL或混合模式程序集)。当不使用/clr时,它只接受标准C++(带有一些Microsoft扩展,主要与对C++11草案的支持有关,其中一些与C++11最终标准不兼容),并生成本机代码。

唯一"生成"C++/CLI代码的是Visual Studio新项目向导和WinForms设计器,并且仅当您选择创建C++/CLI项目时。还提供了用于本机代码和本机对话框编辑器的新项目模板。这些向导都不是VC++编译器的一部分。

不,Visual Studio几乎可以是一个真正的c++编译器。

我想学习如何编写独立于平台的软件

祝你好运!如果你想办法让我们都知道!

抛开玩笑不谈。。。

如果你希望你的代码是独立于平台的,那么你确实应该避开特定于平台的库(比如win32api)。

正如其他答案中所述,VC++并不完全符合C++规范(不确定是否有任何编译器100%符合)。

在windows上使用GCC(例如mingw、cygwin)可能会让您在以后将代码移植到不同的平台时更轻松。试试VC++和MinGW,看看你更喜欢哪一个。使用它们各不相同。如果您想要一个用于MinGW的IDE,请尝试Code::Blocks。

然而,在一个足够复杂的项目中,编写能够与许多不同的c++编译器一起工作的代码变得非常困难,甚至很难与同一编译器的不同版本一起工作!如果你看过boost(一个充满了奇妙但有时很复杂的库的c++项目),它旨在处理各种各样的编译器,那么它似乎有更多的代码来处理编译器中的差异,而不是真正完成任务的代码(也许有点夸张)。

这个问题:如何用c++编写可移植代码?有一些好的提示。