2012-06-08 3 views
4

그래서 내가 사용 오류로 경고를 설정할 수 있습니다 알고 오류로 특정 gcc가 경고를 확인 -Werror = ...하지만 난 만들려는 오류에 경고 다음

"클래스 xxx는 가상 기능을 가지고 있지만, 비 가상 소멸자 "

이 오류가 발생할 수있는 유일한 방법은 지나치게 불쾌한 -Weff ++ 플래그를 설정하는 것입니다. 이 경고를 인쇄 한 다음 오류로 바꾸는 방법 (또는이 경고의 경우 -WeffC++의 하위 플래그는 무엇입니까?)이 있습니까?

감사합니다.

+0

이렇게하면 도움이 될 수 있습니다. http://stackoverflow.com/questions/475407/make-one-gcc-warning-an-error – swalog

+0

나는 그 게시물을 보았지만 그럴 필요가 없다. -Weff ++ 플래그가 켜져 있고 Werror = ... 특정 경고를 받습니까? 나는 단지 특정한 경고를 인쇄하고 싶다. – user869525

+0

정확한 질문은 무엇이며, 어떻게 경고를 내릴 수 있습니까? 그 경고를 (그리고 혼자서) 오류로 만드는 방법 (다른 경고를 허용하는 방법)? –

답변

6

-Wnon-virtual-dtor-Weffc++에 의해 켜지는 특정 경고의 이름입니다. 경고를 오류로 바꾸려면 -Werror=...을 사용하십시오. 따라서 경고가 -Wspam 인 경우 오류로 작성하면 -Werror=spam이됩니다. 따라서이 경우 -Werror=non-virtual-dtor을 사용합니다.

그러나 GCC 4.8 이상인 경우이 경고가 특히 유용하다고 생각하지 않습니다. 그럼 당신은 우수한 -Wdelete-non-virtual-dtor에 액세스 할 수 있습니다 g++ -Wspam -Werror=spamg++ -Werror=spam과 같은 일이

Warn when delete is used to destroy an instance of a class that has virtual functions and non-virtual destructor. It is unsafe to delete an instance of a derived class through a pointer to a base class if the base class does not have a virtual destructor. This warning is enabled by -Wall .

하는 것으로. 경고를 오류로 변환하면 해당 경고가 자동으로 켜집니다.

관련된 메모에서, 당신은 그 생각을하는 유일한 사람이 아닙니다. -Weffc++ is a little overzealous.

+0

위대한 답변, 감사합니다! 나는 Wollete-non-virtual-dtor를 알고 있었다. 그러나 우리는 구버전의 GCC를 사용하고있다. – user869525