gcc - 参数“buf”与原型不匹配

时间:2013-01-21 14:42:19

标签: c linux gcc

在这个函数中

    char *function(buf,salt)
    char *buf;
    char *salt;
    {
        function_body
    }

我收到此错误

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);

2 个答案:

答案 0 :(得分:2)

这意味着你在某个地方声明了这个功能,这是不同的。

此外,你不应该做“K& R风格”的功能,应该写:

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

最有可能两个论点也应该是const

答案 1 :(得分:2)

你在某处有function()的原型声明,而实际的函数声明与它不匹配。在您的情况下,(类型)参数是不同的。

通常,错误显示原型的位置。查找并将其与您的函数声明进行比较。函数参数及其类型必须完全相同。

在您更新的qustion中,您说原型定义为:

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

所以你还需要将你的实际功能定义为

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

(它必须相同,所以包括const - 语句!)