c - 我收到有关返回类型不兼容的警告
问题描述
我有以下代码:
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;
}
推荐阅读
- python - 在 Tensorflow 中对具有浮点值的张量进行异或(使用矢量化)
- python - 用最后 N 列的最常见值填充 NA
- javascript - Javascript Array 循环遍历数组中的特定索引
- docker-compose - 如何在开始使用 docker-compose 时以动态方式获取服务 IP
- python - Numpy:如何找到给定像素一定距离内的所有像素并相应地加权它们?
- matlab - 从simulink中的向量元素构造矩阵
- firebase - 包更新后 Firebase 消息包不起作用?
- knitr - 在 LyX 中创建表时出现“不在外部标准模式”错误
- react-native - 什么时候在 React Native 中使用 useNativeDriver?
- javascript - 添加新记录后javascript电话簿项目刷新页面