gpt4 book ai didi

c - 禁用默认警告的警告/错误

转载 作者:太空狗 更新时间:2023-10-29 16:39:08 24 4
gpt4 key购买 nike

我们想在大型项目上开始使用 -Wall -Werror
由于规模较大,此更改必须分阶段进行,我们希望首先从最重要的警告开始。

最好的方法似乎是使用 -Wall -Werror,但特定警告除外。异常警告是我们有很多的警告(因此修复它们既困难又冒险),我们认为它们不是很危险。
我并不是说我们不想修复所有这些警告 - 只是不是在第一阶段。

我知道两种从 -Werror 中排除警告的方法 - 最好的是 -Wno-error=xxx,如果它不起作用 - -Wno-xxx (当然,我们更愿意看到警告并忽略它,而不是隐藏它)。

我的问题是默认情况下启用的警告,并且没有与之相关的 -Wxxx 标志。当使用 -Werror 时,我找不到任何方法来允许它们。

我特别关注两个具体的警告。这是一个展示它们和编译器输出的程序:

#include <stdio.h>
void f(int *p) { printf("%p\n", p); }

int main(int argc, char *argv[]) {
const int *p = NULL;
const unsigned int *q = NULL;
f(p); /* Line 7: p is const, f expects non const */
if (p == q) { /* Line 8: p is signed, q is unsigned */
printf("Both NULL\n");
}
return 0;
}

% gcc warn.c
warn.c: In function 'main':
warn.c:7: warning: passing argument 1 of 'f' discards qualifiers from pointer target type
warn.c:8: warning: comparison of distinct pointer types lacks a cast

我知道最好的解决方案是修复这些警告,但说起来容易做起来难。为了让这个改变成功,我们必须分阶段进行,不能一次做太多的改变。

有什么建议吗?谢谢。

最佳答案

在编译单元/模块/库的基础上而不是每个警告上分阶段怎么样?触发子目标编译是一个选项(一个足够好的构建系统)吗?

关于c - 禁用默认警告的警告/错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16301665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com