C++ 另一个混淆与“的”概念有关;解释;。请看

C++ 另一个混淆与“的”概念有关;解释;。请看,c++,compilation,interpreter,C++,Compilation,Interpreter,我将用下面的例子来说明我心中的疑问 考虑下面写的C++代码: #include<iostream.h> void main() { cout<<"LULZ \n"; cout<<"\n Enter anything\n"; int a; cin>>a; goto noexistence; } #包括 void main() { 你读过关于……的东西吗 P> C++标准没有说明C++程序是如何执行的。你可以在头脑中(或用铅笔和纸

我将用下面的例子来说明我心中的疑问

考虑下面写的C++代码:

#include<iostream.h>

void main()
{
 cout<<"LULZ \n";
 cout<<"\n Enter anything\n";
 int a;
 cin>>a;

 goto noexistence; 

}
#包括
void main()
{
你读过关于……的东西吗

<> P> C++标准没有说明C++程序是如何执行的。你可以在头脑中(或用铅笔和纸)来执行,你可以使用一堆人奴隶(但这是不道德的),你可以用魔法来执行C++程序。大多数人使用编译器和计算机。 你可以有一个C语言的解释器++

实际和历史上,C++从C(C)的发展演变到了一个主要的(未知的)假设:它可以用真正的硬件编译器来编译。 解释器和编译器并不是一个黑白的区别;有中间的方法(特别是翻译成字节码或,然后解释)

我当然不会将“解释器”定义为逐行工作的东西。大多数解释器都不是这样工作的。他们通常至少会阅读和解析整个“函数”。

你读过关于

<> P> C++标准没有说明C++程序是如何执行的。你可以在头脑中(或用铅笔和纸)来执行,你可以使用一堆人奴隶(但这是不道德的),你可以用魔法来执行C++程序。大多数人使用编译器和计算机。 你可以有一个C语言的解释器++

实际和历史上,C++从C(C)的发展演变到了一个主要的(未知的)假设:它可以用真正的硬件编译器来编译。 解释器和编译器并不是一个黑白的区别;有中间的方法(特别是翻译成字节码或,然后解释)


我当然不会将“解释器”定义为逐行工作的东西。大多数解释器不是这样工作的。他们通常至少读取和解析整个“函数”。

解释器读取输入代码,并在执行之前快速解析它

有时,解析只是将行读入一个链表中。如果这是解释器实现的所有解析,那么它将开始扫描所有输入行以查找goto标签,并打印一个错误,说明label not found

更智能的解释器可以在执行已执行的行时创建跳转表。在这种情况下,可以在此表中搜索标签(向后引用),也可以在以下行中扫描标签(向前引用)

另一个解释器可以选择解析所有输入中的所有令牌,并在运行第一条语句之前创建一个跳转表。这样的解释器只会检查跳转表并打印错误消息


因此,这完全取决于具体情况。然而,编译器会在执行任何尝试之前解析输入,并将其编译成可执行文件。

解释器会读取输入代码,并在执行之前快速解析

有时,解析只是将行读入一个链表中。如果这是解释器实现的所有解析,那么它将开始扫描所有输入行以查找goto标签,并打印一个错误,说明label not found

更智能的解释器可以在执行已执行的行时创建跳转表。在这种情况下,可以在此表中搜索标签(向后引用),也可以在以下行中扫描标签(向前引用)

另一个解释器可以选择解析所有输入中的所有令牌,并在运行第一条语句之前创建一个跳转表。这样的解释器只会检查跳转表并打印错误消息


因此,这完全取决于。然而,编译器在任何执行尝试之前都会对输入进行解析,并将其编译成可执行文件。

如果是CINT,它可能会在堆中倒下。这取决于此解释器的工作方式。没有“正确答案”因为没有标准的C++解释程序。如果你想看看CICT是怎么做的,试试它。如果它是CITT,它可能会在一个堆中掉下来。这取决于这个解释程序是如何工作的。没有正确的答案。因为没有标准的C++解释程序。如果你想看看CICT是怎么做的,试试吧。没关系,不用费心编辑。你的行“你读过关于编译器、解释器、字节码、C++的任何东西吗?”让我现在感到很内疚,因为我是一个没有受过教育的坏孩子,所以我很惭愧我一开始就问了这个问题。先生,你是概念大师,我怎么敢问这样一个愚蠢的问题?这不是为了让你感到内疚,只是为了提供适当的参考。堆栈溢出通常是一个问与源c相关问题的地方ode,您已经搜索或尝试过了。没关系,不用费心编辑。您的行“您读过关于编译器、解释器、字节码、C++的任何内容吗?”让我现在感到很内疚,因为我是一个没有受过教育的坏孩子,所以我很惭愧我一开始就问了这个问题。先生,你是概念大师,我怎么敢问这样一个愚蠢的问题?这不是为了让你感到内疚,只是为了提供适当的参考。堆栈溢出通常是一个问与源c相关问题的地方ode,您已经搜索或尝试过了。谢谢,这说明人们所说的“逐行阅读”并不是严格意义上的“逐行阅读并执行”但根据解释器的不同,它可以是更复杂的方法。是的,它可以更简单或更复杂。我想也可以编写一个实际读取并执行一行的解释器,但是扫描标签需要从一开始就重新读取文件。谢谢!这就是我的疑问!事实上我对stackoverflow上的一个口译相关问题的回答如下:“口译人员解释李先生的代码行