編譯沒錯連接出錯 能解釋下編譯失敗的原因嗎?
能解釋下編譯失敗的原因嗎?編譯失敗的原因有很多。主要有以下幾種類型:(1)用戶編寫的源程序存在語法錯誤。例如:引用而不定義變量。這種錯誤是最簡單的,也是編譯器最容易檢出的錯誤,因此會導(dǎo)致源程序的編譯失
能解釋下編譯失敗的原因嗎?
編譯失敗的原因有很多。主要有以下幾種類型:
(1)用戶編寫的源程序存在語法錯誤。例如:引用而不定義變量。這種錯誤是最簡單的,也是編譯器最容易檢出的錯誤,因此會導(dǎo)致源程序的編譯失??;
](2)用戶編寫的源程序中有引用,沒有初始化變量,也會導(dǎo)致程序運行錯誤。例如:雖然用戶定義了一個指向內(nèi)存地址的指針變量,但是在使用它之前,它不會被初始化,也不會做出任何判斷,并且會給指針指向的內(nèi)存地址一個值。在這種情況下,編譯器無法按語法檢查它,但一旦程序運行,就會出現(xiàn)錯誤。在Windows系統(tǒng)中,指向XXX的內(nèi)存不能被讀?。ɑ?qū)懭耄?。如果是在UNIX/Linux系統(tǒng)中,就會發(fā)生內(nèi)核轉(zhuǎn)儲。
(3),數(shù)組超出界限。這種錯誤是編譯器檢測不到的,但一旦程序運行,程序的運行結(jié)果可能是隨機的。這不是用戶需要的。
所以從編譯的本質(zhì)來看,以上情況應(yīng)該屬于編譯失敗的類型。因為編譯器不能阻止這些錯誤,反而讓程序在各種意想不到的結(jié)果中運行。