我有一个问题。我在尝试创造一棵树。完整的代码很大,所以我很难进入这里。因此,下面给出了一个总结。
struct sample *fn_02(void);
struct sample *fn_03(void);
// Main Function
int main(void) {
struct sample *tree;
tree = fn_01();
}
// First Function
struct sample *fn_01(void) {
for(;;) {
switch(..) {
case 1:
return fn_02();
case 2:
return fn_03();
}
}
}
// Second Function
struct sample *fn_02(void) {
struct sample *node;
return node;
}
// Third Function
struct sample *fn_03(void) {
struct sample *node;
return node;
}
我想创建一个树。因此,我创建了一个名为struct sample {};
的结构,并为它创建了3个函数。
在第一个(fn_01()
)函数中有一个无限循环,fn_02
和fn_03
返回的值应该创建一个树。
这是我的问题:
fn_01
中的循环应该继续工作。- 但是当
fn_02
和fn_03
返回时,循环(和函数)停止。 - 但是返回对于创建树是必不可少的。并且for循环必须继续工作。
您能提出另一种解决方案吗?
如果没有看到更多的代码,很难回答这个问题,但是您可能可以通过延迟返回语句来处理这个问题:
struct sample *fn_01(void) {
sample * s = NULL;
for(;;) {
switch(..) {
case 1:
s = fn_02();
break;
case 2:
s = fn_03();
break;
}
// Check s and/or do something with it. Return only when relevant
}
}