操作系统:Debian 9
编译器:gcc 8.2.0(已从测试(测试)存储库安装)
我知道使用来自debian测试分支的东西是危险的,但是debian测试通常是稳定的,并且gcc 8.2已发布为稳定版本,因此应该没有很多错误。
在此功能中:
int user_tui (const char *title, const char *subtitle)
{
int action;
// action = USER_IFACE_ACT_FOO;
show_help();
user_tui_show_log(title, subtitle);
action = usr_input();
return action;
}
它报告了以下错误(-Wall -Werror
以及-O3 -march=native
):
/.../modules//user//src//user_tui.c: In function ‘user_tui’:
/.../modules//user//src//user_tui.c:91:9: error: ‘action’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
return action;
^~~~~~
cc1: all warnings being treated as errors
取消注释初始化时,错误仍然存在。我认为甚至不需要,因为没有条件或任何东西可以阻止分配action = usr_input();
。
这是虚假的警告,还是合法的?
我会说这是gcc中的错误;它甚至不能被认为是虚假的。
答案 0 :(得分:0)
感谢@MaximEgorushkin指出我应该查看usr_input()
的内部。
错误出现在usr_input()
中,而不是user_tui()
。
它的开关很长,里面有很多开关,其中一个我忘记了default:
条目。
这课:在函数内部递归查看它们是否真正初始化。
我认为gcc应该让我们知道!