【问题标题】:What does -Werror do in the Ubuntu Terminal? [closed]-Werror 在 Ubuntu 终端中有什么作用? [关闭]
【发布时间】:2026-02-23 06:10:02
【问题描述】:

在大学里,我们被教导使用以下方法编译我们的项目:

gcc -Wall -Werror -ansi -o myfile.out myfile.c -lm

但是,我似乎无法在网上找到关于“Werror”作用的解释?

【问题讨论】:

  • 你试过man gcc看看它的选项有什么作用吗?这不是您找出命令选项对任何命令的含义的方式吗?
  • 您的问题的标题表明对命令选项的工作方式存在严重误解。任何选项都没有一般意义,它们是由特定命令定义的。
  • 不,我没有,因为我不知道它的存在。你假设我有一个严重的误解是正确的,但幸运的是你是来纠正我的! @Barmar

标签: c gcc compilation


【解决方案1】:

它将所有警告报告为错误,因此编译停止而不继续。否则只会在控制台上显示带有-Wall 的警告,但编译不会停止。如果您想了解它,请前往gnu page

-Werror

    Make all warnings into errors.

这是一个示例代码:

#include <stdio.h>

int main()
{
    int i;
    printf("%s\n", "Good");
    return 0;
}

当你通过-Werror

$ gcc -Wall -Werror -ansi abc.c
abc.c: In function ‘main’:
abc.c:5:9: error: unused variable ‘i’ [-Werror=unused-variable]
     int i;
         ^
cc1: all warnings being treated as errors

没有-Werror,它将编译和运行。

$ gcc -Wall  -ansi abc.c
abc.c: In function ‘main’:
abc.c:5:9: warning: unused variable ‘i’ [-Wunused-variable]
     int i;
         ^

$ ./a.out 
Good

【讨论】: