为什么C ++被提及为'通常'编译语言?

时间:2018-02-14 16:47:40

标签: c++

C++ tag wiki中,声明

  

C ++是......(通常)编译的......编程语言......

然而Wikipediacplusplus.com声称C ++是一种编译语言而没有提及任何例外。

您能否告诉我们C ++ 通常的原因,而不是总是,这是一种编译语言?何时可以将C ++视为非编译语言?

百科:

  

C ++是一种编译语言,在许多平台上都可以使用它。

cplusplus.com:

  

...是一种编译语言。   C ++直接编译到机器的本机代码,允许

这可能表明存在非编译形式的C ++。是什么让维基通常'?

4 个答案:

答案 0 :(得分:10)

因为" C ++"由C ++标准定义的只是一种在抽象机器中运行的编程语言。实现可以随心所欲地模拟该抽象机器的行为。

因此,无论是否有人真正使用C ++解释器,说C ++总是被编译,这将是一个毫无根据的假设。

答案 1 :(得分:7)

没有技术上的理由说明为什么你不能编写 C ++解释器而不是编译器,我相信有些是在过去编写的。

C也是一种(通常)编译语言,但是我自己在大约20年前编写了一个(缓慢的,递归的)C89解释器。 C ++只是同一问题的一个(很多)更难的版本。

答案 2 :(得分:2)

有一些C ++子集的解释器(related question),但绝大多数C ++工作是使用编译器完成的。使用解释器是如此罕见,以至于没有C ++文献或相当大的C ++库或程序没有明确地关于/用于那些解释器会将自己限制在可以在解释器上使用的C ++子集。

使用C ++,实际上编译更多C ++比解释任何C ++更常见。

无论值得什么,我读过的最新相关新闻(Hacker News)都是关于C++17 REPL

答案 3 :(得分:1)

在大多数情况下编译C ++,但是,例如,cling是C ++解释器。我没有尝试过很多,但它似乎是一个相当完整的C ++实现。