這個程式不編譯的原因是因為編譯器順序讀取檔案。當編譯器為函式的呼叫()對main()線6,不知道什麼補充的是,因為我們還沒有定義()到10號線!產生第乙個錯誤(「找不到識別符號」)。
當visual studio 2005到10線()實際的宣言,也抱怨將被重新定義。這是有點誤導性的,因為它從來沒有定義在第乙個地方。後來的版本的視覺工作室正確地忽略這個額外的錯誤資訊。
儘管第二個錯誤的冗餘,它是有用的,要注意,它是相當常見的乙個單一的錯誤產生(經常是多餘的)多個編譯器錯誤或警告。
規則:當解決在您的程式中的編譯錯誤時,總是首先解決產生的第乙個錯誤。
為了解決這個問題,我們需要解決的事實,編譯器不知道什麼是。有兩種常見的方法來解決這個問題。
選項1:排序函式呼叫,所以()定義在main():
#include int add(int x, int y)
int main()
這樣,通過時間main()()呼叫,編譯器會知道什麼是()。因為這是這樣乙個簡單的程式,這個變化是比較容易做的。然而,在乙個更大的程式中,它可以是繁瑣的試圖找出哪些函式呼叫其他功能(和在什麼順序),所以他們可以依次宣告。
此外,這個選項並不總是可能的。讓我們說,我們正在編寫乙個程式,有兩個功能a和b,如果函式a呼叫函式b,和函式b呼叫函式a,那麼有沒有辦法,以一種方式,他們都會很高興的功能。如果你定義了乙個第一,編譯器會抱怨它不知道b是什麼。如果你先定義b,編譯器會抱怨它不知道是什麼。
函式原型和函式的前向宣告
選項2:使用乙個前向宣告。
前向宣告允許我們在實際定義識別符號之前告訴編譯器關於識別符號的存在性。
在函式的情況下,這使我們能夠在我們定義函式的身體之前,告訴編譯器乙個函式的存在。這樣,當編譯器遇到函式的呼叫時,它會理解我們正在做乙個函式呼叫,並且可以檢查,以確保我們正確地呼叫函式,即使它還不知道如何或在**定義的函式。
要編寫乙個函式的前向宣告,我們使用乙個稱為函式原型的宣告語句。函式原型由函式的返回型別、名稱、引數,但沒有函式體(花括號之間的一部分)。因為函式原型宣告,它以分號結束。
這是一本()函式的函式原型:
Scala《識別符號》
val scala.math.sqrt 2 val val 42 println val 1 to10 等價於 1.to 10 1 10 等價於 1 10 1 tostring 等價於 1.tostring val a 42 a等價於 a.unary a 1 等價於 a a 1 構造列表list 1...
python 識別符號
在 python 裡,識別符號由字母 數字 下劃線組成。在 python 中,所有識別符號可以包括英文 數字以及下劃線 但不能以數字開頭。python 中的識別符號是區分大小寫的。以下劃線開頭的識別符號是有特殊意義的。以單下劃線開頭 foo 的代表不能直接訪問的類屬性,需通過類提供的介面進行訪問,不...
Python 識別符號
在 python 裡,識別符號由字母 數字 下劃線組成。在 python 中,所有識別符號可以包括英文 數字以及下劃線 但不能以數字開頭。python 中的識別符號是區分大小寫的。以下劃線開頭的識別符號是有特殊意義的。以單下劃線開頭 foo 的代表不能直接訪問的類屬性,需通過類提供的介面進行訪問,不...