gpt4 book ai didi

c - 为什么当我从 `double` 函数返回 `void *` 时,它变得不兼容?

转载 作者:行者123 更新时间:2023-12-05 09:26:30 25 4
gpt4 key购买 nike

我正在制作一个通用编程库,用于让我在用 C 编程时更轻松一些。我遇到的问题是当从 void * 返回 double 函数,它会导致 incompatible types 错误。这是为什么?我认为 void * 应该返回任何数据类型,而不仅仅是选择的数据类型?

主.c

void * _example_code();

int main(void) {
double res = _example_code();
}

void * _example_code() {
return 2.23;
}

最佳答案

根据 C 2018 6.5.16.1 1,唯一可自动转换为 void * 的是指向不带限定符的对象类型的指针和空指针常量。

double 不会自动转换为 void *

您可以为 void * 函数返回一个指向 double 的指针,但是您需要一个生命周期超过函数返回值的 double ,并且尝试以这种方式实现“通用”功能可能会出现其他问题。一方面,当您为 void * 返回 double *int * 或其他指针类型时,不会通知调用例程type 指针在转换为 void * 之前。您需要自己编写程序来处理该问题,方法是提供某种机制来通知调用者并让调用者将 void * 转换为适当的类型。

关于c - 为什么当我从 `double` 函数返回 `void *` 时,它变得不兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73899947/

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