【问题标题】:static inline void function has warning "control reaches end of non-void function" [closed]静态内联 void 函数有警告“控制到达非 void 函数的结尾”[关闭]
【发布时间】:2019-03-25 17:55:05
【问题描述】:

我目前在 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 等),但这里不是这种情况。

【问题讨论】:

    标签: c warnings void gcc-warning


    【解决方案1】:

    void * 不是void

    将你的第一行改为

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

    void * 是一些未指定为特定类型的指针。不从指定为返回 int * 的函数返回值会产生类似的错误。

    【讨论】:

    • 我不敢相信我错过了。谢谢,这解决了它。我最初将其写为返回int *,但显然没有很好地清理东西。
    猜你喜欢
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 2022-01-25
    相关资源
    最近更新 更多