我有以下代码示例:
$(function () {
$(".delete").click(function () {
var element = $(this);
var del_id = element.attr("id");
var info = 'id=' + del_id;
if (confirm(info)) {
$.ajax({
type: "POST",
url: "delete_labor.php",
data: info,
success: function () {}
});
$(this).closest("tr").remove();
}
return false;
});
});
Afaik最后void some_function()
{
int ret = do_something();
if(ret == SOME_ERROR)
return;
}
无用,因为无论if
有什么值,函数都会返回。我期待编译器发出警告或至少一个信息(我使用GCC 6)。我还尝试启用this thread的所有警告,但仍然没有。使用ret
语句返回并在void函数结束时返回之间是否有任何区别,或者它是否仍然得到优化(但我仍然认为警告会有用)?
答案 0 :(得分:2)
编译器警告应保持误报和漏报之间的平衡。
太多警告 - 你会花费大量时间在没有任何实际改进的情况下走过它们(或者更现实地说,你会完全禁用它们)。
很难想象这样一种警告会显示代码真正存在问题的情况,而不仅仅是一个小问题。
例如,考虑-Wunused
。通常表示您拼错了某个变量名称,或忘记了this
:
float x = ...;
float y = ...;
return atan2(y, y);
//x is never used, probably an error
您的示例可能是静态分析工具的诊断,但是太小而无法用作常规编译器警告。
答案 1 :(得分:0)
void函数可以完美地返回。
这就是为什么你没有看到错误/警告。从我的answer开始,即使我使用了一些有用的标志,我也什么也得不到:
Georgioss-MacBook-Pro:~ gsamaras$ g++ -pedantic -Wall -Wextra -Wconversion main.cpp
Georgioss-MacBook-Pro:~ gsamaras$
如果要终止该功能,则需要执行此操作,但根本不需要返回任何内容。
尝试return 5;
,当然会收到错误。
答案 2 :(得分:0)