能解释下编译失败的原因吗
1个回答
展开全部
编译失败的原因有很多种。其中主要有以下一些类型:
(1)、用户编写的源程序中有语法错误。例如:未定义某一个变量就进行引用。这一类错误是最简单的,也是编译器最容易检查出来的,所以会产生对源程序的编译失败;
(2)、用户编写的源程序中有未对变量进行初始化就进行引用,也会导致程序运行错误。例如:用户虽然定义了一个指向某一个内存地址的指针变量,但是在使用前却未对它进行初始化,并进行任何判断,就往该指针指向的内存地址赋予了一个数值,这种情况在语法上编译器是检查不出来的,但是程序一旦运行起来,肯定就会出现错误了。在 WINDOWS 系统下一般是:指向XXXX的内存不能够为 Read (或者为 Write),要是在 UNIX/Linux 系统下就会发生 Core Dumped。
(3)、数组越界。这类错误也是编译器检查不出来的,但是一旦程序运行起来,程序的运行结果可能就是一个随机的结果。而不是用户需要得到的结果。
所以从编译的实质上说,以上情况都应该属于编译失败的类型。因为编译器并无法阻止这些错误的发生,而是让程序在运行时发生了各种各样的意想不到的运行结果。
(1)、用户编写的源程序中有语法错误。例如:未定义某一个变量就进行引用。这一类错误是最简单的,也是编译器最容易检查出来的,所以会产生对源程序的编译失败;
(2)、用户编写的源程序中有未对变量进行初始化就进行引用,也会导致程序运行错误。例如:用户虽然定义了一个指向某一个内存地址的指针变量,但是在使用前却未对它进行初始化,并进行任何判断,就往该指针指向的内存地址赋予了一个数值,这种情况在语法上编译器是检查不出来的,但是程序一旦运行起来,肯定就会出现错误了。在 WINDOWS 系统下一般是:指向XXXX的内存不能够为 Read (或者为 Write),要是在 UNIX/Linux 系统下就会发生 Core Dumped。
(3)、数组越界。这类错误也是编译器检查不出来的,但是一旦程序运行起来,程序的运行结果可能就是一个随机的结果。而不是用户需要得到的结果。
所以从编译的实质上说,以上情况都应该属于编译失败的类型。因为编译器并无法阻止这些错误的发生,而是让程序在运行时发生了各种各样的意想不到的运行结果。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询