为啥Visual Studio生成的C++“Hello World”项目看起来有点奇怪?

Posted

技术标签:

【中文标题】为啥Visual Studio生成的C++“Hello World”项目看起来有点奇怪?【英文标题】:Why does the C++ "Hello World" project generated by Visual Studio look a little strange?为什么Visual Studio生成的C++“Hello World”项目看起来有点奇怪? 【发布时间】:2011-05-11 10:33:04 【问题描述】:

我是 C++ 编程的新手(尽管我有 Java、C# 和 Visual Basic 方面的经验)。我使用 Visual Studio 2010 创建了一个默认的“Hello World”示例项目,但是当我研究它生成的示例代码时,它看起来与我在查看 C++ 教程时看到的代码有点不同。

在我的调查中,我了解到 C++ 有两个版本,或者至少有两个不同的标准。我认为它们被称为 CLR 和 CLI。将来我必须学习什么标准或版本才能进一步编程?

【问题讨论】:

“有点不同”?嗯,这说明了一切。 我同意这个问题可能会更好,但这是充满希望的新 C++ 程序员的常见混淆来源,至少在使用 Microsoft 产品(例如 Visual Studio)时是这样。与其投反对票,不如考虑尝试改进问题。 @Cody Gray。感谢您的回复。还有你的态度! 【参考方案1】:

普通的、普通的、基于 ISO 标准的C++,这可能是您在教程中看到的那种。如果你想用常规的 C++ 编写 Windows 应用程序,你可能会使用targeting the Win32 API(或者使用一组封装了 Win32 API 基本功能的类,例如 MFC)。

然后是C++/CLI,它几乎可以被认为是一种全新的语言(尽管它是 C++ 的超集),它包含 Microsoft 的扩展以支持 .NET Framework。它被标准化为ECMA-372。 .NET Framework 运行在 CLR 之上,因此与 CLR 兼容的 C++ 版本称为“C++/CLI”。

您现在可能想完全忽略该语言的 C++/CLI 变体。它实际上只在与 .NET 代码的互操作性场景中有用。由于您似乎想学习 C++,额外的 CLI 内容只会让人分心。您想学习真正的 C++,而不是嫁接在 C++ 之上的 .NET Framework。如果您想学习 .NET,请从 C# 或 VB.NET 开始。

my answer here 中提供了有关 C++ 和 C++/CLI 之间区别的更多信息。

【讨论】:

C++/CLI 是一种独立的标准化语言;它不是任何东西的“扩展”,也不是专有的。【参考方案2】:

c++/cli 是一种基于 dotNET 的语言,取决于 CLR。

C++ 由 ISO 标准定义,不应与 microsoft 的 c++/CLI 混淆

如果您希望使用基于 dotNET 的语言,请学习 C# 而不是 C++/CLI。您的教程很可能是针对常规 C++ 的——这比 C++/CLI 更常见。 Visual Studio 可以很好地与标准 C++ 或 C++/CLI 配合使用,您可以在创建项目时选择使用哪个。

【讨论】:

以上是关于为啥Visual Studio生成的C++“Hello World”项目看起来有点奇怪?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我们在 Visual Studio 2013 中引用 C++ 项目?

为啥 C++ 中的 Visual Studio 不如 C# 中的智能? [关闭]

为啥以下无法在 Visual Studio 2010 C++ 下编译?

C++ 中的 Visual Studio MFC:为啥“int”有效但“double”无效?

为啥 Visual Studio 2008 在 C++ 代码中突出显示 internal 作为关键字?

Visual Studio 2010在编译c++时为啥有错误也没有下划波浪线?