在Windows中,VC ++有一个漂亮的选项/We可将特定警告转换为错误。此外,VC ++发出的每个警告都有一个警告编号,例如
warning C4265: 'CFoo' : class has virtual functions, but destructor is not virtual
因此很容易识别数字并使用/We开关添加编译器选项/ We4265
我检查了g ++文档并找到了类似的东西(我相信),-Werror=,但文档中提到了
将指定的警告变为错误。
但我的问题是,
给出编译器警告
/yada/yada/src/inc/module.h:580: warning: 'struct IFoo' has virtual functions but non-virtual destructor
如何使用-Werror
编译器选项将其转换为错误?
答案 0 :(得分:3)
句子in the manual继续,答案是:
附加警告的说明符;例如
-Werror=switch
将-Wswitch
控制的警告变为错误。此开关采用否定形式,用于否定-Werror
特定警告;例如,-Wno-error=switch
使-Wswitch
警告不会出错,即使-Werror
生效也是如此。
我不是百分百确定,但-Wdelete-non-virtual-dtor
可能是有问题的警告,因此您需要-Werror=delete-non-virtual-dtor
。
答案 1 :(得分:1)
使用更高版本的g ++或Clang ++编译代码,它们也会发出警告的名称。
$ clang++ -Wall -Wextra -Werror=non-virtual-dtor test.cpp
test10.cpp:4:3: error: 'X' has virtual functions but non-virtual destructor
[-Wnon-virtual-dtor]
~X(){}
^
1 error generated.
答案 2 :(得分:1)
指定-Werror
没有任何参数将所有警告变成错误,因此也是你感兴趣的那个。如果你只想把那个特定的警告变成错误,你可以导致g ++以详细模式打印错误开关。较新版本的g ++甚至可以自动执行此操作。