c++ 如何在g++中禁止显示特定的警告

6tdlim6h  于 2023-05-19  发布在  其他
关注(0)|答案(5)|浏览(226)

我想禁止来自g++的特定警告。我知道-Wno-XXX标志,但我正在寻找更具体的东西。我想要-Weffc++中的一些警告,但不是所有警告。类似于你可以用lint做的事情-禁用特定的消息。
在gcc中有没有内置的方法来做到这一点?我必须写一个 Package 器脚本吗?

jtw3ybtb

jtw3ybtb1#

不幸的是,g没有提供这个特性。在VC中,可以使用#pragma warning来禁用某些特定的警告。在gcc中,最接近的是diagnostic pragmas,它允许您为某些文件或项目启用/禁用某些类型的诊断。

  • 编辑 *:GCC从4.6.4开始支持推送/弹出警告(参见changelog
pbpqsu0x

pbpqsu0x2#

对于某些警告,有一个命令行开关可以禁用它们。为了知道使用哪个开关,将-fdiagnostics-show-option传递给gcc。

7nbnzgx9

7nbnzgx93#

你可以在输出中使用***grep -v***。
根据要禁用的警告,有时可以在代码中进行更正。例如:

int main()
{
  int i;
}
  • 生成:* foo.cc:4:警告:未使用的变量'i'

然而,这并不:

#define MARKUSED(X)  ((void)(&(X)))

int main()
{
  int i;
  MARKUSED(i);
}
bis0qfac

bis0qfac4#

将标准错误传递给过滤器,以删除您不想看到的内容。例如,这是我的make文件:

main.o:  main.cpp
    g++ -c -Wall main.cpp 2>&1 | grep -v Wunused-variable
ou6hu8tu

ou6hu8tu5#

当我的同事们试图阻止我编写简洁的代码时,他们使用g++命令行选项

-Werror-parenthesis

我在代码中禁用了这个错误:

#pragma GCC diagnostic ignored "-Wparentheses"

相关问题