在C++ tag wiki中,声明
C ++是......(通常)编译的......编程语言......
然而Wikipedia和cplusplus.com声称C ++是一种编译语言而没有提及任何例外。
您能否告诉我们C ++ 通常的原因,而不是总是,这是一种编译语言?何时可以将C ++视为非编译语言?
百科:
C ++是一种编译语言,在许多平台上都可以使用它。
cplusplus.com:
...是一种编译语言。 C ++直接编译到机器的本机代码,允许
这可能表明存在非编译形式的C ++。是什么让维基通常'?
答案 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 ++实现。