rc应该是return code的意思,将函数返回值rc初始化为-EINVAL,EINVAL由POSIX.1规范中的一个宏,一般通过包含C标准头文件errno.h,表示参数无效(invalid argument),在VC中errno.h中定义如下:
#define EINVAL 22
源于UNIX对错误的处理,UNIX中对系统API调用时如果返回0表示函数成功执行,返回-1则表示函数执行失败,通过设置errno这个全局变量来表示失败原因,这样系统就定义了一些错误码,Linux上shell中执行
man errno
可得到全部的错误码。其中就有一个EINVAL表示函数执行时,传递过来的参数无效(比如数组长度为负等)。
这些错误码都是定义的正值,另一种错误返回方式就是通过返回不同的值来表征错误的类型或程序退出的状态,典型的有进行IO时成功读取了多少字节或者成功写了多少字节,返回成功读或写的字节数。通过返回负数表示执行失败,这时我们可以通过返回不同的负值表征错误的类型,就有了
rc = -EINVAL
即在正的错误码前加一个负号,在错误处理时当返回值小于0时,我们就继续检测返回值的错误类型