我在编译期间收到错误:
src / smtp.c:208:1:警告:控制到达非空函数的末尾[-Wreturn-type]
这是相关代码
int smtp_test_method(int socket)
{
int smtp_code;
if ((smtp_code = smtp_speak(socket, "VRFY root\r\n")) == 501 ||
smtp_code == 250 ||
smtp_code == 252)
return 0;
else if ((smtp_code = smtp_speak(socket,
"MAIL FROM:test@test.com\r\n")) == 250) {
if ((smtp_code = smtp_speak(socket, "RCPT TO:root\r\n")) == 250 ||
smtp_code == 550)
return 1;
} else
return smtp_code;
}
其中smtp_speak是一个将/ EHLO连接到服务器然后发送消息的函数,将响应代码作为int返回。为什么我会收到此错误?
答案 0 :(得分:3)
在第二个if
之后需要一个return语句:
if ((smtp_code = smtp_speak(socket, "RCPT TO:root\r\n")) == 250 || smtp_code == 550)
return 1;
**else
return something;**
答案 1 :(得分:0)
我在每个{}
周围添加return something;
并自动重新格式化。
结果很清楚。
1)使用自动格式化
2)在{}
块
if/else
int smtp_test_method(int socket) {
int smtp_code;
if ((smtp_code = smtp_speak(socket, "VRFY root\r\n")) == 501
|| smtp_code == 250 || smtp_code == 252) {
0;
} else if ((smtp_code = smtp_speak(socket, "MAIL FROM:test@test.com\r\n"))
== 250) {
if ((smtp_code = smtp_speak(socket, "RCPT TO:root\r\n")) == 250
|| smtp_code == 550) {
return 1;
}
} else {
return smtp_code;
}
/* Missing return */
}