首页 > 解决方案 > 我收到有关返回类型不兼容的警告

问题描述

我有以下代码:

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;

我如何摆脱这个警告?

标签: cpointers

解决方案


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

因此,您的代码似乎应该更改为:

typedef void dma_callback_t (tSOME_ENUM channel);
...

dma_callback_t* _test_getDmaCallbackHandler(void)
{
    return dmaCallbackHandler;
}

推荐阅读