大佬教程收集整理的这篇文章主要介绍了编译器和解释器之间的混淆?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我怀疑来自以下代码:
int main() { printf("Hello") scanf("%d",&j); return 0; }
我正在使用MINGW GCC编译器.当我编译上面的代码后发生以下事情:
首先我得到了错误
error: expected ';' before 'scanf()'
error: 'j' undeclared (first use in this function)
所以我想知道为什么两个错误都没有一次列出?
编译器基本上只是一个语言翻译器.它将源语言作为输入并生成目标语言作为输出.
解释器采用一种语言(无论是高级还是低级)并执行语言描述的代码.
困惑主要是因为大多数现代脚本语言都包含编译器和解释器,其中编译器采用脚本语言并创建较低级别的等效项(类似于二进制机器语言),然后解释器将读取和执行.
至于编译器错误的问题,很可能是因为编译器由于第一个错误而无法继续解析scanf调用,而只是跳过它(包括未声明的变量).
您还应该知道,在C中,某些错误实际上会导致代码中出现更多错误,例如,这些错误是正确的
int j printf("Enter something: "); scanf("%d",&j);
由于在声明变量j之后缺少分号,您将收到错误,但是由于编译器无法找到变量j,因此您也会得到scanf行的错误,即使scanf调用是正确的.
另一个在不相关代码中产生后续错误的典型错误示例是忘记头文件中结构的终止分号.如果它是最后一个结构,你甚至可能在头文件中没有任何错误,只是源文件中包含头文件的无关错误.
以上是大佬教程为你收集整理的编译器和解释器之间的混淆?全部内容,希望文章能够帮你解决编译器和解释器之间的混淆?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。