我有以下代码:
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] 删除。
我来说两句