为何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
相关产品推荐
相关产品推荐

