所以我知道我可以使用 -Werror=... 将警告变成错误,但我想将以下警告变成错误:
“类 xxx 具有虚函数但非虚析构函数”
我知道你可以得到这个错误的唯一方法是打开过于讨厌的 -Weffc++ 标志。有没有办法(或者这个警告的 -Weffc++ 中的子标志是什么)只打印这个警告然后把它变成一个错误?
谢谢!
所以我知道我可以使用 -Werror=... 将警告变成错误,但我想将以下警告变成错误:
“类 xxx 具有虚函数但非虚析构函数”
我知道你可以得到这个错误的唯一方法是打开过于讨厌的 -Weffc++ 标志。有没有办法(或者这个警告的 -Weffc++ 中的子标志是什么)只打印这个警告然后把它变成一个错误?
谢谢!
-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++
有点过分热心的人。