我有一个函数,它递归地调用自身,直到连接到服务器。然后函数返回0。为什么我有这样的错误行为:“控制到达非空函数的末尾”指向函数结束的行,我做错了什么。我有 if/else 语句,仅在 else 中返回,但即使在 if 中返回,它仍然是相同的。我的逻辑不对吗??
code:
uint8_t TcpClient::ConnectToBoard(uint8_t attempts)
{
struct sockaddr_in server; /* server address */
server.sin_family = AF_INET;
server.sin_port = htons(port);
server.sin_addr.s_addr = inet_addr(ip);
if(connect(client_socket, (struct sockaddr *)&server, sizeof(server)) < 0)
{
close(client_socket);
GetStreamSocket(0,0);
cout<<"attempts"<<(unsigned)attempts<<endl;
if(attempts == 10)
{
attempts =0;
printf("ERROR: %s\n", strerror(errno));
}
attempts++;
usleep(500000); // 5 seconds trying to get socket before error log
ConnectToBoard(attempts); //recursive call
}
else
{
cout<<"Here inside else of connect to board"<<endl;
return 0;
}
}
我有一个函数,它递归地调用自身,直到连接到服务器。然后函数返回0。
No, the 最内层递归调用返回,那么其他的都没有 return 语句。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)