我想编译以下文件(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兼容标志?
答案 0 :(得分:31)
实际上,你可能不希望所有的警告,因为一些警告可以被认为是风格或主观的,而其他警告(例如你碰到的警告)在你的情况下只是愚蠢。
最初构建 -Weverything
有两个原因:
-Weverything
你挑选那些你不想申请的人;优点是,当转移到新版本的编译器时,您更有可能从新警告中受益显然,发现与生产使用并不完全兼容;因此,您似乎属于黑名单案例。
Clang诊断系统将输出(默认情况下)负责生成警告的最具体警告组的名称(此处为-Wc++98-compat
),并且可以通过添加no-
来关闭每个警告组在-W
之后。
因此,对于黑名单,你得到:
-Weverything -Wno-c++98-compat -Wno-...
我们鼓励您不时修改列入黑名单的警告(例如,当您升级到新的编译器时)。