簡體   English   中英

如何使用clang ++與-std = c ++ 11 -Weverything -Werror

[英]How to use clang++ with -std=c++11 -Weverything -Werror

我想編譯以下文件(temp.cpp):

#include <iostream> 

class Foo {
public:
  Foo() = default;
};

int main(){
  std::cout << "Works!" << std::endl;
  return 0;
}

使用以下命令: clang++ temp.cpp -o temp -std=c++11 -Weverything -Werror

有一個錯誤:

temp.cpp:5:11:錯誤:默認函數定義與C ++ 98不兼容[-Werror,-Wc ++ 98-compat]

我知道有一個類似c ++ 98-compat的警告,它是一切的一部分。 如何啟用除c ++ 98-compat之外的所有警告? -Weverything是否有c ++ 11兼容標志?

實際上,你可能不希望所有的警告,因為一些警告可以被認為是風格或主觀的,而其他警告(例如你遇到的警告)在你的情況下是愚蠢的。

-Weverything最初的構建原因有兩個:

  • 發現:否則很難獲得所有可用警告的列表
  • 黑名單替代方案:使用gcc,你可以選擇你想要申請的警告(白名單),並且-Weverything你可以選擇那些你不想申請的東西; 優點是,當轉移到新版本的編譯器時,您更有可能從新警告中受益

顯然,發現與生產使用並不完全兼容; 因此,你似乎陷入黑名單案件中。

Clang診斷系統將輸出(默認情況下)負責生成警告的最具體警告組的名稱(此處為-Wc++98-compat ),並且可以通過在-W之后添加no-來關閉每個警告組-W

因此,對於黑名單,您將獲得:

-Weverything -Wno-c++98-compat -Wno-...

並且我們鼓勵您不時修改列入黑名單的警告(例如,當您升級到新的編譯器時)。

暫無
暫無

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

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