[英]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
最初的構建原因有兩個:
-Weverything
你可以選擇那些你不想申請的東西; 優點是,當轉移到新版本的編譯器時,您更有可能從新警告中受益 顯然,發現與生產使用並不完全兼容; 因此,你似乎陷入黑名單案件中。
Clang診斷系統將輸出(默認情況下)負責生成警告的最具體警告組的名稱(此處為-Wc++98-compat
),並且可以通過在-W
之后添加no-
來關閉每個警告組-W
因此,對於黑名單,您將獲得:
-Weverything -Wno-c++98-compat -Wno-...
並且我們鼓勵您不時修改列入黑名單的警告(例如,當您升級到新的編譯器時)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.