由网友(十梦九他)分享简介:以下代码段中被认为是最佳实践的是什么:int foo(struct data *bar, struct info bla) {if (!bar) {bla->status = 0;return;}...}事实上,它工作得很好。但我对gcc给我警告感到不舒服。以下是实际代码:static int pop(struct...![C语言函数说明与返回值](https://p.xsw88.cn/allimgs/daicuo/20230903/1951.png)
以下代码段中被认为是最佳实践的是什么:
int foo(struct data *bar, struct info bla) {
if (!bar) {
bla->status = 0;
return;
}
...
}
事实上,它工作得很好。但我对gcc
给我警告感到不舒服。
![C语言函数说明与返回值](https://p.xsw88.cn/allimgs/daicuo/20230903/1951.png)
以下是实际代码:
static int pop(struct stack **stack, struct info *info) {
int ret;
struct stack *tmp;
if (!*stack) {
info->error = 0;
return;
}
ret = (*stack)->data;
tmp = *stack;
*stack = (*stack)->next;
free(tmp);
return ret;
}
推荐答案
最佳实践不是这样编写代码。如果此时不能返回某种类型的整数,则需要重新设计代码。请注意,所编写的函数将向调用代码返回某种值-您只是不知道该值将是什么。
解决此问题的经典方法是通过指针参数返回值,而实际函数返回状态:
int f( int * p ) {
if ( bad ) {
return 0; // fail indicator
}
else {
* p = 42; // integer return value
return 1; // success indicator
}
}
编辑:在您发布的代码中,您正在操作堆栈。对于我所知道的所有堆栈,弹出空栈都是未定义的行为,所以您可以只返回您喜欢的任何整数(我会返回0)并记录该行为。
相关推荐
最新文章