静态内联void函数发出警告“控制到达非void函数的末尾”

时间:2019-03-25 17:55:05

标签: c warnings void gcc-warning

我目前在C语言中具有以下功能:

static inline void *cmyk_to_rgb(int *dest, int *cmyk)
{
    double c = cmyk[0] / 100.0;
    double m = cmyk[1] / 100.0;
    double y = cmyk[2] / 100.0;
    double k = cmyk[3] / 100.0;

    c = c * (1 - k) + k;
    m = m * (1 - k) + k;
    y = y * (1 - k) + k;

    dest[0] = ROUND((1 - c) * 255);
    dest[1] = ROUND((1 - m) * 255);
    dest[2] = ROUND((1 - y) * 255);
}

在编译时,我会被警告

warning: control reaches end of non-void function [-Wreturn-type]

我尝试在函数主体的末尾添加一个显式的return,这将导致完全错误。解决此警告的正确方法是什么?我在网上找到的所有解决方案都涉及添加return语句,该函数应该在该语句中返回某个值(int等),但此处情况并非如此。

1 个答案:

答案 0 :(得分:2)

void *不是void

将第一行更改为

static inline void cmyk_to_rgb(int *dest, int *cmyk)

void *是一些未指定为特定类型的指针。不从指定为返回int *的函数中返回值将给您类似的错误。