gpt4 book ai didi

c - 如何将函数指针作为 const 返回?

转载 作者:太空宇宙 更新时间:2023-11-04 01:22:30 25 4
gpt4 key购买 nike

<分区>

我创建了一个动态数组struct Vector,我对用户隐藏了它的内部结构。相反,提供了与它们交互的功能,例如

bool Vector_push(struct Vector *vector, const void *value)

为了帮助弹出元素,该结构包含一个指向正确删除每个元素的函数的指针。这个函数是用函数设置的:

void Vector_set_type_destructor(struct Vector *vector, void (*type_destructor)(void *))

我觉得提供一个 setter 而没有 getter 有点奇怪,所以我很快添加了以下功能。

const void (*Vector_type_destructor(const struct Vector *vector))(void *);

请注意我是如何添加 const 关键字的,因为我希望类型析构函数只能通过 setter 进行修改,而不是通过返回的指针进行修改。但是,我收到了来自 clang 的以下警告。

src/Vector.c:184:66: warning: function cannot return qualified void type
'const void' [-Wqualified-void-return-type]
const void (*Vector_type_destructor(const struct Vector *vector))(void *) {
^
src/Vector.c:185:12: warning: incompatible pointer types returning
'void (*const)(void *)' from a function with result type
'const void (*)(void *)' [-Wincompatible-pointer-types]
return vector->type_destructor;

如何通过函数正确返回指针 void (*type_destructor)(void *) 而不将其暴露给可能的修改?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com