C-函数返回值与错误处理
除了极少数函数调用不会出错(如getpid()
,参考[APUE-8.2]),绝大多数函数都可能发生调用失败。在调用失败时,
就涉及到如何通知调用者,以便调用者进行相对应的错误处理。
错误处理策略
- 作为调用者希望函数的返回结果就是我们期待的值,但这样报告错误又不方便
- 若用函数返回值来判断函数的成功或失败,获取期待结果又不方便
所以在C中,往往都采用了折衷的方式,通过使用一个与所有成功结果都不相同的值作为函数失败时的返回值,常见方式有:
失败时返回值
- 返回
NULL
指针,如fopen
- 返回
-1
- 返回
非0
- 某些专用宏,如
EOF
,SOCKET_ERROR
- 返回
成功时返回值
- 返回非空指针
- 返回
0
- 某些专用宏,如
SOCKET_SUCCESS
参考
- UNIX环境高级编程.W.Richard Stevens / Stephen A.Rago.译者: 尤晋元 / 张亚英 / 戚正伟.ISBN: 9787115147318
- The Standard C Library Paperback. July 11, 1992. P.J. Plauger.ISBN-13: 978-0131315099