編譯不通過是什么原因 能解釋下編譯失敗的原因嗎?
能解釋下編譯失敗的原因嗎?編譯失敗的原因有很多。主要有以下幾種類型:(1)用戶編寫的源程序中存在語法錯(cuò)誤。例如,在沒有定義變量的情況下進(jìn)行引用。這種錯(cuò)誤最簡單,也最容易被編譯器發(fā)現(xiàn),所以會導(dǎo)致源程序編

能解釋下編譯失敗的原因嗎?
編譯失敗的原因有很多。主要有以下幾種類型:
(1)用戶編寫的源程序中存在語法錯(cuò)誤。例如,在沒有定義變量的情況下進(jìn)行引用。這種錯(cuò)誤最簡單,也最容易被編譯器發(fā)現(xiàn),所以會導(dǎo)致源程序編譯失敗;
(2)在用戶編寫的源程序中,引用沒有初始化的變量也會導(dǎo)致程序運(yùn)行錯(cuò)誤。比如用戶雖然定義了一個(gè)指向某個(gè)內(nèi)存地址的指針變量,但是在使用之前并沒有對其進(jìn)行初始化,給指針?biāo)赶虻膬?nèi)存地址賦予了一個(gè)數(shù)值。這種情況編譯器在語法上是查不出來的,但是程序一旦運(yùn)行,肯定會出錯(cuò)。一般來說,在WINDOWS系統(tǒng)中,指向XXXX的內(nèi)存是不能讀(或?qū)?的。如果是在UNIX/Linux系統(tǒng)下,會發(fā)生內(nèi)核轉(zhuǎn)儲。
(3)數(shù)組越界。這種錯(cuò)誤編譯器是檢測不到的,但是程序一旦運(yùn)行,程序的運(yùn)行結(jié)果可能就是一個(gè)隨機(jī)的結(jié)果。而不是用戶需要的結(jié)果。
所以從編譯的本質(zhì)上來說,上述情況應(yīng)該屬于編譯失敗的類型。由于編譯器無法防止這些錯(cuò)誤的發(fā)生,使得程序運(yùn)行時(shí)出現(xiàn)各種意想不到的運(yùn)行結(jié)果。
編譯不出來是怎么回事?
編譯失敗的原因有很多。主要有以下幾種類型:
(1)用戶編寫的源程序中存在語法錯(cuò)誤。例如,在沒有定義變量的情況下進(jìn)行引用。這種錯(cuò)誤最簡單,也最容易被編譯器發(fā)現(xiàn),所以會導(dǎo)致源程序編譯失敗;
(2)在用戶編寫的源程序中,引用沒有初始化的變量也會導(dǎo)致程序運(yùn)行錯(cuò)誤。比如用戶雖然定義了一個(gè)指向某個(gè)內(nèi)存地址的指針變量,但是在使用之前并沒有對其進(jìn)行初始化,給指針?biāo)赶虻膬?nèi)存地址賦予了一個(gè)數(shù)值。這種情況編譯器在語法上是查不出來的,但是程序一旦運(yùn)行,肯定會出錯(cuò)。一般來說,在WINDOWS系統(tǒng)中,指向XXXX的內(nèi)存是不能讀(或?qū)?的。如果是在UNIX/Linux系統(tǒng)下,會發(fā)生內(nèi)核轉(zhuǎn)儲。
(3)數(shù)組越界。這種錯(cuò)誤編譯器是檢測不到的,但是程序一旦運(yùn)行,程序的運(yùn)行結(jié)果可能就是一個(gè)隨機(jī)的結(jié)果。而不是用戶需要的結(jié)果。
所以從編譯的本質(zhì)上來說,上述情況應(yīng)該屬于編譯失敗的類型。由于編譯器無法防止這些錯(cuò)誤的發(fā)生,使得程序運(yùn)行時(shí)出現(xiàn)各種意想不到的運(yùn)行結(jié)果。