我收到有关不兼容返回类型的警告

我有以下代码:

static void dmaCallbackHandler(tSOME_ENUM channel)
{
    switch(channel)
    {
        case blabla:
              //do some stuff

    }
    func();
}

然后下面的几行我有一个函数,它返回上面函数的地址,我从另一个 .c 文件调用这个函数 (_test_getDmaCallbackHandler):

uint32* _test_getDmaCallbackHandler(void)
{
    return &dmaCallbackHandler;
}

我收到一条警告,内容如下:

warning: returning 'void (*)(tSOME_ENUM)' {aka 'void (*)(enum <anonymous>)'}
         from a function with incompatible return type 'uint32 *' 
         {aka 'unsigned int *'}
         [-Wincompatible-pointer-types]

472 |     return &dmaCallbackHandler;

我如何摆脱这个警告?

伦丁

编译器说的是:您指定了返回类型,uint32_t*然后以函数指针的形式将完全不相关的类型传递给它,这丝毫不兼容。

所以看起来你的代码应该改成这样:

typedef void dma_callback_t (tSOME_ENUM channel);
...

dma_callback_t* _test_getDmaCallbackHandler(void)
{
    return dmaCallbackHandler;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何满足有关printf()上不兼容类型的警告

不推荐收到有关选项“Gm”的无关警告

为什么在包装了在useMemo中返回对象的函数后,我会收到有关非函数的警告?

为什么我在打字稿中没有收到有关StrictNullChecks的警告

为什么我收到有关Java实用程序类的警告

为什么我会收到有关此代码示例的警告?什么合适?

我不断收到有关传递参数的警告,使指针从整数转换而无需强制转换

当我使用 const 作为指针时,我收到不兼容的指针类型警告

有关类型不匹配的错误

为什么我会从这个结构中收到不兼容的指针类型警告?

Maven插件警告有关在不兼容的类型上调用“等于”

为什么STS会警告我有关不匹配的参数?

为什么Visual Studio不警告我有关空引用异常的信息?

有关相同方法的参数类型冲突和转换不兼容的编译器错误

我安装了Airport Extreme路由器,并收到有关“双NAT”的警告。为什么这么糟?

Java为什么不警告有关==“ something”?

我收到有关日期时间的错误消息

Maven为什么警告我有关编码的信息?

rkhunter警告我有关root.rules的信息

与指针有关的警告

联接查询不返回任何有关CURDATE的记录

Eclipse给出了有关不返回整数的错误

Window.onerror不返回有关错误的信息

编译返回“警告:来自不兼容指针类型的赋值”

是否有任何方法可以收到有关noImplicitAny不合规的警告(不是错误)?

指针类型不兼容警告

我正在寻找有关nat类型的引理

纵观者不断收到来自客户的有关“此”关键字的警告?

如何检查变量(例如$ 3)是否存在,以使我不会收到有关“未初始化的值”的警告?