2013-01-21 34 views
-2

GCC - 參數 「BUF」 並不在此功能</p> <pre><code>char *function(buf,salt) char *buf; char *salt; { function_body } </code></pre> <p>我得到這個錯誤匹配原型

error: argument "buf" doesn't match prototype 
error: prototype declaration 
argument "salt" doesn't match prototype 
error: prototype declaration 

這是實際的代碼:

char * function(const char *, const char *); 

    char *buffer = NULL; 

    buffer = function(arg1, arg2); 
+0

你的原型是怎樣的? –

+0

什麼是實際的代碼,什麼是實際的錯誤信息? (提示:實際的錯誤信息包括文件/行信息。) – melpomene

+1

如果您正在嘗試學習C,則選擇了錯誤的書。你在做什麼是預先制定標準C.它是古老的,並在20世紀80年代使用。獲得一本處理ANSI C的新書。 –

回答

2

某處有一個function()的原型聲明,並且實際函數聲明與它不匹配。在你的情況下,(的類型)參數是不同的。

通常,錯誤顯示原型的位置。查看它並將其與您的函數聲明進行比較。函數參數及其類型必須是,確切地說完全相同。

在你更新qustion你說的那個原型被定義爲:

char * function(const char *, const char *); 

所以你還需要定義你的實際功能

char *function(const char *buf, const char *salt) 
{ 
    // function_body 
} 

(它必須是相同的,因此包括const -statements!)

2

這意味着你有某個地方的函數聲明,這是不同的。

而且,你不應該做 「K & R-風格」 功能,應該寫成:

char * function(char* buf, char *salt); 

,最有可能的兩個參數應該是const了。

相關問題