我的C函数返回值有问题。
我有一个主要功能,我以这种方式调用函数“send”;
int go_On;
go_On = send(VOTE_REQUEST, 1);
“发送”功能的组成如下:
int send(int msg, int flag) {
// inizialization of some parameters;
if (msg == VOTE_REQUEST) {
// Do some operations...
result = send(VOTE_COMMIT, 1);
}
else if (msg == VOTE_COMMIT) {
// Do some other operations...
return 10;
}
}
其中VOTE_REQUEST和VOTE_COMMIT是在文件开头声明的常量。
问题是返回值go_On是1而不是10。 我认为问题出现在我自己调用“发送”功能的事实上。事实上,如果我把
return 10;
行前
result = send(VOTE_COMMIT, 1);
go_On假设正确的值10。 “发送”功能的调用本身就是问题的根源吗?如何解决它以使返回的值变为10?
感谢所有帮助我的人。
答案 0 :(得分:3)
您需要从递归调用中返回值。VOTE_REQUEST
或VOTE_COMMIT
之外的其他内容,则应返回错误值-1
:
int send(int msg, int flag) {
// inizialization of some parameters;
if (msg == VOTE_REQUEST) {
// Do some operations...
return send(VOTE_COMMIT, 1);
}
else if (msg == VOTE_COMMIT) {
// Do some other operations...
return 10;
}
return -1;
}
答案 1 :(得分:1)
问题似乎是你在函数的第一个分支中没有return
语句。这是未定义的行为。
也许你的意思是:
if (msg == VOTE_REQUEST)
{
return send(VOTE_COMMIT, 1);
}
else if (msg == VOTE_COMMIT)
{
return 10;
}
return -1; // default
答案 2 :(得分:0)
在函数send()中,
时没有返回任何值msg == VOTE_REQUEST...
尝试添加返回值...
int send(int msg, int param2)
{
if(msg == VOTE_REQUEST)
return send(VOTE_COMMIT, 1);
else if(msg == VOTE_COMMIT)
return 10;
else
return -1;
}