簡體   English   中英

將警告轉換為錯誤

[英]Convert Warning to Error

在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編譯器選項將其轉換為錯誤?

手冊中的那句話繼續着,並給出了答案:

附加了警告說明符; 例如, -Werror=switch將由-Wswitch控制的警告轉換為錯誤。 此開關采用否定形式,用於對特定警告取-Werror 例如,即使-Werror生效, -Wno-error=switch會使-Wswitch警告不是錯誤。

我不確定100%,但是-Wdelete-non-virtual-dtor可能是有問題的警告,因此您需要-Werror=delete-non-virtual-dtor

使用更高版本的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.

不指定-Werror而沒有任何參數將所有警告轉換為錯誤,因此也可以選擇上面感興趣的警告。如果只對將特定警告轉換為錯誤感興趣,則可以使g ++在其中打印錯誤開關詳細模式。 較新版本的g ++甚至會自動執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM