You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何void*类型函数触发‘非void函数未返回值’编译错误?

关于ft_clearpath函数编译错误的原因解析

这问题本质是你混淆了C语言里void和void*两种函数返回类型的核心区别:

  • void是无返回值类型,编译器不会强制要求函数体内写返回语句(写return;也合法)。
  • void*是通用指针返回类型,编译器会严格检查函数是否返回了一个指针值(哪怕是NULL),只要函数体内没写符合要求的返回语句,就会触发non-void function does not return a value的错误。

你把ft_clearpath声明成void*类型,等于给编译器传递了「这个函数必须返回一个指针」的指令,但你却没写任何返回语句,完全违反了声明的约定,所以编译器报错。

两种解决方向:

  • 要是这个函数本来就不需要返回值,直接把函数声明改成void ft_clearpath(...),函数体里可以留空或者写return;。
  • 要是函数需要返回指针(比如返回清理后的路径指针或NULL),就在函数体末尾加返回语句,比如return NULL;或者对应指针变量。

内容的提问来源于stack exchange,提问作者jdagz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 04:02:05