虚假警告gcc-未初始化

时间:2018-11-22 13:36:15

标签: gcc gcc-warning

操作系统: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中的错误;它甚至不能被认为是虚假的。

1 个答案:

答案 0 :(得分:0)

感谢@MaximEgorushkin指出我应该查看usr_input()的内部。

错误出现在usr_input()中,而不是user_tui()

它的开关很长,里面有很多开关,其中一个我忘记了default:条目。

这课:在函数内部递归查看它们是否真正初始化。

我认为gcc应该让我们知道!