Void function with an Error of non-void function does not return a value [已关闭]

r3i60tvu  于 2023-04-11  发布在  其他
关注(0)|答案(2)|浏览(343)

**已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。

这个问题是由一个错字或一个无法再复制的问题引起的。虽然类似的问题可能是on-topic在这里,但这个问题的解决方式不太可能帮助未来的读者。
4天前关闭。
Improve this question
谁能帮我理解为什么这个函数会产生错误:
error:non-void function does not return a value [-Werror,-Wreturn-type] }生成^ 1错误。

void  *ft_clearpath(char **arr)
{
    int i;

    i = 0;
    while(arr[i])
        free(arr[i++]);
    free(arr);
}

显然,它是一个空函数,不应该有返回值。它假设在退出程序之前清除路径。
非常感谢。

bbmckpt7

bbmckpt71#

函数的返回类型是指针类型void *

void  *ft_clearpath(char **arr)
{
    int i;

    i = 0;
    while(arr[i])
        free(arr[i++]);
    free(arr);
}

所以函数应该返回一个指针,但它什么也不返回。
要么把它定义为

void  *ft_clearpath(char **arr)
{
    int i;

    i = 0;
    while(arr[i])
        free(arr[i++]);
    free(arr);

    return NULL;
}

比如说

arr = ft_clearpath( arr );

(使用函数调用者中声明的指针的名称代替名称arr
或者说

void  ft_clearpath(char **arr)
{
    int i;

    i = 0;
    while(arr[i])
        free(arr[i++]);
    free(arr);
}
zfciruhq

zfciruhq2#

void类型的指针是一个唯一的指针类型。它允许我们指向任何数据类型,从整数值或浮点数到字符串。因此,它不是void函数。
要使其成为一个,请从函数签名中删除星号(*)。

相关问题