收到不兼容的指针类型警告,因为函数的返回不是 void* 而是结构指针

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

这个警告似乎没有必要。 在我的代码中,我有一个函数指针类型

(void*)(*function_pointer)(void* data)

有些函数需要这种类型的函数指针作为参数,因为它们不依赖于返回类型,它只需是一个指针即可。

但是,当我传递像

somestruct* function_A(void* data)
这样的函数时 对此,我收到了警告,尽管
somestruct*
可以隐式转换为
void*
,就像我可以传递给函数
int function_test(void* data)
一个 somestruct 指针一样,它可以在没有警告的情况下工作。

是的,我可以使用 void* 定义 function_A 作为返回类型,但这意味着每个出于其他原因使用该函数的人都必须将其返回值转换为 somestruct*,我有这两个选项,保持原样并忽略警告让我有点恼火,或者更改函数定义,这会让我更恼火。

所以我在这里,询问是否有第三种选择。

c pointers function-pointers gcc-warning
1个回答
0
投票

A

void*
不一定与
somestruct*
大小相同或以相同方式返回。您需要使
function_A
返回
void*
就像您将参数设置为
void*
一样。

© www.soinside.com 2019 - 2024. All rights reserved.