使用 Weverything 和 C++11 时与 clang 冲突的警告 [重复]
Posted
技术标签:
【中文标题】使用 Weverything 和 C++11 时与 clang 冲突的警告 [重复]【英文标题】:conflicting warnings with clang when using Weverything and C++11 [duplicate] 【发布时间】:2016-10-10 13:08:26 【问题描述】:当使用带有-Weverything -std=c++11
的clang 3.8编译以下代码时:
static void foo(long long)
int main() foo(0ll);
我收到以下警告:
warning: 'long long' is incompatible with C++98 [-Wc++98-compat-pedantic]
这是一个诊断错误吗? (-Wc++98-compat-pedantic
包含在 C++11 模式下的-Weverything
中)
转载here
【问题讨论】:
Plain-Weverything
不应该单独用于生产,它可以实现几乎所有的诊断,其中许多你并不关心;喜欢-Wpadded
。
@BaummitAugen 确实这是另一个问题的重复。谢谢!
【参考方案1】:
不是真的。
即使您已指定标准是 C++11,您也明确表示要启用所有警告。
引用文档:
除了传统的 -W 标志外,还可以启用所有 通过传递 -Weverything 进行诊断。这可以按预期工作 -Werror,还包括来自 -pedantic 的警告。
这对你使用的编译标准没有影响,-Wc++98-compat-pedantic
明确说“检查我的代码是否与 C++98 兼容”,所以它就是这样做的。
【讨论】:
以上是关于使用 Weverything 和 C++11 时与 clang 冲突的警告 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
(Rcpp)armadillos abs() 函数在 std::abs 工作时与 c++ double 一起使用时输出错误值