如何使用clang++与-std=c++11 - everything -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: error:默认函数定义与c++98不兼容[-Werror,- wc++ 98-compat]
我知道有一个像c++98-compat这样的警告,它是所有东西的一部分。如何启用除c++98-compat之外的所有警告?是否有一个c++11兼容的标志-一切?
实际上,您可能不需要所有的警告,因为许多警告可能被认为是风格上的或主观的,而其他警告(例如您遇到的警告)在您的情况下只是愚蠢的。
-Weverything
最初建立有两个原因:
- 发现:否则很难获得所有可用警告的列表
- 黑名单替代方案:使用gcc,您可以选择希望应用的警告(白名单),使用
-Weverything
,您可以选择不希望应用的警告;优点是,当切换到编译器的新版本时,您更有可能从新的警告 中受益。
显然,发现并不真正兼容生产使用;因此,您似乎属于黑名单的情况。
Clang诊断系统将输出(默认情况下)负责生成警告的最具体警告组的名称(这里是-Wc++98-compat
),每个警告组可以通过在-W
之后添加no-
来关闭。
-Weverything -Wno-c++98-compat -Wno-...
并且鼓励您不时地修改黑名单警告列表(例如,当您升级到较新的编译器时)。
相关文章:
- MSVC是否支持C++11样式的属性而不是__declspec
- 创建LinkedList退出,返回代码为-11(SIGSEGV)
- 我可以将一个用clang c++11编译的对象与另一个用c++17编译的对象链接起来吗
- 继承:构造函数,初始化C++11中基类的类C数组成员
- 如何将模板转换为C++11之前的模板
- c++11评估顺序(未定义的行为)
- C++中的VLA,扩展名为std=C++11
- 代码在我的计算机上运行良好,但是在将其提交给coursera时遇到未知的信号11问题
- "类模板示例<int>;"语句对 C++11 是什么意思?
- this_thread::sleep_for和计时时钟之间的关系是否由C++11标准指定
- 如何使用lock_guard在c++11中实现scoped_lock功能
- C++11 中不同类型的对象的 std::array 的替代方案
- 为什么 -mmacosx-version-min=10.10 不阻止使用标记为从 10.11 开始的函数?
- 为什么我的C++代码中出现'Segmentation Fault: 11'行?
- 强枚举类型定义:Clang Bug 还是 C++11 标准不确定性?
- 别名模板的专业化 C++11 中没有开销的最佳替代方案
- STLPort using C++11
- Qt 5.11.2 (Clang 8.0 (Apple), 64 位), 找不到 QJSEngine 文件
- 使用everything和c++ 11时与clang的冲突警告
- 如何使用clang++与-std=c++11 - everything -Werror