-2

在这个函数中

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

2 回答 2

2

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

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

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

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

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

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

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

于 2013-01-21T14:45:24.427 回答
2

这意味着您在某处有函数声明,这是不同的。

此外,您不应该使用“K&R 风格”的功能,应该这样写:

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

很可能这两个论点也应该是const

于 2013-01-21T14:44:23.767 回答