2010-10-10 59 views
1

我想在C++中創建一個非常簡單的函數,但是我不斷收到「鏈接錯誤」。C++中的函數幫助

我的代碼:

#include <iostream> 

using namespace std ; 


int fun(int,int); 

main(){ 
    int width,height,w,h,mult; 

    cin>>width; 
    cin>>height; 

    mult = fun(width,height); 

    int fun(int w,int h);{ 
     w * h ; 
     } 

    cout << mult ; 

} 

錯誤:

[Linker error] undefined reference to `fun(int, int)' 
ld returned 1 exit status 
+0

您的樂趣實施是在錯誤的範圍內,你需要把它的主要之外。 – Vinzenz 2010-10-10 21:14:55

+0

你也試圖在'main'裏面定義函數'fun'。嘗試在'cout << mult;'out'main'之前移動代碼。 – birryree 2010-10-10 21:18:06

+0

是爲了實現樂趣而調用fun之後的代碼塊的意圖?它幾乎看起來像試圖在C++代碼中使用委託(C#)...有沒有像我不知道的東西?有 – 2010-10-10 21:20:08

回答

2

確認外......這麼多東西不對。應該是這樣的:

#include <iostream> 

using namespace std ; 

int fun(int, int); 

void main(){ 
    int width,height,mult; 

    cin >> width; 
    cin >> height; 

    mult = fun(width, height); 

    cout << mult << endl; 

} 

int fun(int w, int h) { 
    return w*h; 
} 

(一段時間去過,因爲我感動C++)

+0

http://ideone.com/RENLr – mpen 2010-10-10 21:27:12

+0

謝謝,很難從可理解的筆記我拼湊這種事情在課堂上:\ – rectangletangle 2010-10-10 22:47:14

+0

採取整潔的筆記;)尤其是當它的代碼...一個錯字,它不會編譯。 – mpen 2010-10-12 08:28:53

6

沒有的fun(int, int)任何地方實施。實現它的模塊應該與此鏈接。或者你應該在上面的模塊中編寫函數,也許在原型的地方。

這似乎有一種失敗的嘗試定義函數中途:

int fun(int w,int h);{ 
    w * h ; 
    } 

什麼這實際上它聲明(再次),有一些功能int fun():這是一個原型。然後有一個表達式w * h,仍然在函數main中被評估,但沒有結果。

+1

有。作爲'main'的子函數。鑑於聲明在最大範圍內,這不是一個好主意。 – Benoit 2010-10-10 21:16:48

+0

@Benoit:哈哈你是對的我也沒有看到:S – Vinzenz 2010-10-10 21:18:12

+0

是正確的 - 這不是任何類型的函數定義。每個人都發現了分號嗎? (是的,如果分號被刪除,代碼仍然會有類似的問題,由於原因已經解釋。) – aschepler 2010-10-10 21:22:27

1

您正在聲明一個全局函數fun,並且在main中定義它。你應該之外聲明它,或刪除外部聲明

1

您需要定義函數在main()