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

C语言返回值规范:错误码int与布尔值,哪种实践更优?

C语言函数返回值:用带错误码的int还是布尔值?

没有绝对的“最优方案”,核心看你的需求和代码风格的一致性,两种方式各有适用场景:

一、返回带错误码的int(0表示成功)

这是libc等类Unix系统库的惯例,优势很直接:

  • 能返回具体错误类型,调用者可以根据不同的非0值判断是权限问题、资源不足还是参数错误,方便排查和针对性处理;
  • 像mkdir()、fopen()这类系统调用,失败时返回-1,同时通过errno传递更详细的错误码,本质就是这种思路的延伸。
    如果你的函数需要让调用者知道“哪里错了”,这种方式更实用。

二、返回表示成功的布尔值(非0表示成功)

这是Windows API的常用风格,适合只关心“成没成”,不需要具体错误原因的场景:

  • 调用时写法更直观,直接写if (init_module())就能判断成功,不用额外写等于0或者取反的逻辑;
  • 如果后续需要错误信息,可以额外通过指针参数(比如int *err_code)把错误码传出来,不影响主返回值的简洁性。

关键原则

  1. 一致性优先:如果项目依赖某个库(比如libc或Windows API),尽量跟着库的风格走,避免同一个项目里有的函数0成功、有的非0成功,徒增理解成本;
  2. 明确性要到位:不管选哪种,一定要在函数注释里写清楚返回值的含义,比如// 返回0表示成功,非0为错误码:1=参数无效,2=资源不足,别让调用者猜。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 17:29:52