ANSI/ISO C++和C++/CLI有什么区别?

car*_*995 3 c++ c++-cli

公共语言基础结构(CLI)由Microsoft创建,作为其.NET技术的基础,它是一种ECMA标准(ECMA-335),允许应用程序以各种高级编程语言编写,并在不同的系统环境中执行 .符合CLI的编程语言可以访问相同的基类库,并且能够编译为相同的中间语言(IL)和元数据.然后,IL进一步编译为特定于特定体系结构的本机代码.

由于这个中间步骤,不必从头开始重写应用程序.他们的IL只需要进一步编译成系统的本机代码.

系统环境的确切含义是什么?


此外,在研究Ivor Horton的Beginning Visual C++ 2008时,我注意到他表示可以使用Visual C++ 2008开发基本上不同类型的C++应用程序.这些应用程序包括:

  1. 在一台计算机上本机执行的应用程序,他称之为本机C++程序.本机C++程序是用ISO/ANSI语言标准定义的C++版本编写的.

  2. 应用程序也可以编写为在C++的扩展版本中称为C++/CLI的CLR控制下运行.这些程序称为CLR程序C++/CLI程序.

那么本机C++程序和CLR程序是什么意思?他们之间有什么区别?感谢任何专家的帮助.

Dom*_*nic 9

"系统环境"意味着像Linux,Windows x86,Windows x64等.请注意它们如何在段落末尾交替使用术语"体系结构".


本机C++程序是您使用标准(ANSI/ISO)C++并将其编译为.exe的程序.通常,您将针对特定环境(例如Windows x86)对其进行编译,在这种情况下,它无法在Linux下运行,并且可以在Windows x64上的WoW64仿真层下运行.值得注意的是,此代码直接在计算机上运行.

C++/CLI是一种与标准C++不同的编程语言.它,就像C#或VB.NET,运行在微软的顶级Ç ommon 大号 anguage 覆盖整个院落.这意味着它可以访问您引用的段落中的所有这些好东西,比如基类库和IL的编译,它允许它在不同的体系结构上运行.但是,就像C#和VB.NET一样,它不能在机器上本机运行.它需要安装.NET Framework; .NET Framework的一部分工作是将C++/CLI程序转换为本机程序,这意味着它们对机器的直接访问要少得多.

  • 不过,我很确定目前没有编译器.这感觉就像OP不需要担心的细节. (6认同)
  • 微软的C编译器确实*不符合ISO C标准. (2认同)
  • 标准 C++ 取决于很多东西。您需要了解的不仅仅是目标处理器的指令集才能编写工作可执行文件。您还需要知道可执行文件格式,并且需要知道如何与操作系统交互(读取或写入文件,或者将文本打印到控制台都是由操作系统实现的。所以C++应用程序必须要求操作系统做C++/CLI 通过生成适用于任何 CLR 实现的代码来回避这个问题。.NET 是 Windows 上的一种此类实现,但 Mono 是另一种,它运行在 Linux 上。 (2认同)