我正在编写一些在 C 语言中操作字符串并返回字符串摘录的函数。
您对函数返回值的良好样式有何看法。
引用Steve McConnell's Code Complete (1993 版第 5.8 节)他建议我使用 以下格式:
void my_function ( char *p_in_string, char *p_out_string, int *status )
我正在考虑的备选方案是:
返回函数的结果(选项 2)使用:
char* my_function ( char *p_in_string, int *status )
返回函数的状态(选项 3)使用:
int my_function ( char *p_in_string, char *p_out_string )
在上面的选项 2 中,我将从 my_function 返回一个局部变量的地址,但我的调用函数会立即使用该值,所以我认为这是可以的,并假设内存位置没有被重用(纠正我这个如果我错了)。
这取决于个人风格和偏好还是我应该考虑其他问题?
最佳答案
选项 3 几乎是不言而喻的(?)行业标准。如果一个返回整数的基于 IO 的 C 函数,返回一个非零整数值,这几乎总是意味着 IO 操作失败。您可能想引用 this Wikibook's section关于 C/C++ 中的返回值。
人们之所以用0表示成功是因为成功只有一个条件。然后,如果它返回非零值,您将以某种方式查找非零值表示 的错误。例如,1 表示它无法分配内存,2 表示参数无效,3 表示存在某种 IO 错误。从技术上讲,通常您不会返回 1,但您会返回 XXX_ERR_COULD_NOT_MALLOC
或类似的东西。
此外,never return addresses of local variables .除非您亲自 malloc
编辑它,否则无法保证从函数返回后该变量的地址。阅读链接了解更多信息。
关于c - C程序中的函数格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1287362/