2009-11-15 36 views
0

我有一個函數:爲什麼我不能在C中傳遞兩個字符作爲函數參數?

int get_symbol(tab *tp, FILE *fp, char delim) 

,我這樣稱呼它:

get_symbol(tp, fp, ';') 

我總是有它的頭是宣稱:

int get_symbol(tab *, FILE *, char); 

不,這一切工作正常,我可以在函數中執行代碼並設置delim。 但是,如果我嘗試多一個字符添加到該函數的簽名,如:

int get_symbol(tab *tp, FILE *fp, char delim1, char delim2) 

功能停止執行。爲什麼會這樣?

+1

這應該工作,至少從你發佈的內容。你能進一步闡述這個問題嗎? 「停止執行」究竟如何? – bluebrother 2009-11-15 22:11:45

+1

「停止執行」是什麼意思? – Pod 2009-11-15 22:13:43

+1

您的代碼中存在一個錯誤。顯示代碼。 – nos 2009-11-15 22:24:20

回答

1

你應該有:

int get_symbol(tab *tp, FILE *fp, char delim1, char delim2) 
{ 
blah blah; 
return 1; 
} 
... 
... 

get_symbol(tp, fp, ';','?') 

你呢?

0

作爲猜測什麼是「停止執行」可能意味着,你是否更新頭文件中的簽名?

+0

是的,當然...... – goe 2009-11-15 22:16:23

+0

「停止執行」是什麼意思呢?您需要發佈該函數的代碼並描述您期望發生的事情。 – 2009-11-15 22:46:30

1

好的,這裏沒有足夠的信息,所以我要做出一個答案。

您正在使用C++編譯器,並且沒有設置非常高的警告級別。你已經改變了函數的原型,但是當你調用它時你沒有改變參數。由於overloading,C++編譯器將它們視爲不同的函數,因此不會調用正確的函數。

這可能會解決發生了什麼事。如果是的話,給我們更多的東西繼續......。

相關問題