所以我知道我可以使用-Werror = ...将警告变成错误但是我想将以下警告变成错误:
“类xxx具有虚函数但非虚析构函数”
我知道你可以得到这个错误的唯一方法是打开过度讨厌的-Weffc ++标志。有没有办法(或者这个警告的-Weffc ++中的子标志是什么)只打印此警告然后将其变成错误?
谢谢!
答案 0 :(得分:6)
-Wnon-virtual-dtor
是-Weffc++
启用的特定警告的名称。要将任何警告变为错误,请使用-Werror=...
。因此,如果警告为-Wspam
,则将其设为错误-Werror=spam
。因此,在这种情况下,您将使用-Werror=non-virtual-dtor
。
但是,如果您使用GCC 4.8及更高版本,我不认为此警告特别有用。然后您就可以访问上级-Wdelete-non-virtual-dtor
:
当
delete
用于销毁某个类的实例时发出警告 具有虚函数和非虚析构函数。这是不安全的 通过指向基类的指针删除派生类的实例 class,如果基类没有虚拟析构函数。这个 警告由-Wall
启用。
请注意,g++ -Wspam -Werror=spam
与g++ -Werror=spam
相同。将警告变为错误会自动打开该警告。
在相关的说明中,您并不是唯一一个认为-Weffc++
is a little overzealous。