我收到一个关于不兼容的返回类型的警告。

问题描述 投票:0回答:1

我有下面的代码。

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;

我怎样才能消除这个警告?

c pointers
1个回答
2
投票

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

所以看来,你的代码应该改成这样。

typedef void dma_callback_t (tSOME_ENUM channel);
...

dma_callback_t* _test_getDmaCallbackHandler(void)
{
    return dmaCallbackHandler;
}
© www.soinside.com 2019 - 2024. All rights reserved.