对错误进行特定的gcc警告

use*_*525 4 c++ gcc warnings compiler-errors compiler-flags

所以我知道我可以使用-Werror = ...将警告变成错误但是我想将以下警告变成错误:

"类xxx具有虚函数但非虚析构函数"

我知道你可以得到这个错误的唯一方法是打开过度讨厌的-Weffc ++标志.有没有办法(或者这个警告的-Weffc ++中的子标志)只打印此警告然后将其变成错误?

谢谢!

Dav*_*one 6

-Wnon-virtual-dtor是由其打开的特定警告的名称-Weffc++.要将任何警告变为错误,请使用-Werror=....因此,如果警告是-Wspam,将其变为错误-Werror=spam.所以在这种情况下,你会使用-Werror=non-virtual-dtor.

但是,如果您使用GCC 4.8及更高版本,我不认为此警告特别有用.然后你可以访问上级-Wdelete-non-virtual-dtor:

delete用于销毁具有虚函数和非虚析构函数的类的实例时发出警告.如果基类没有虚析构函数,则通过指向基类的指针删除派生类的实例是不安全的.此警告已启用-Wall.

注意与之g++ -Wspam -Werror=spam相同g++ -Werror=spam.将警告变为错误会自动打开该警告.

在相关的说明中,你并不是唯一一个认为-Weffc++有点过分热心的人.