使用everything和c++ 11时与clang的冲突警告



在clang 3.8与-Weverything -std=c++11编译以下代码时:

static void foo(long long) {}
int main() { foo(0ll); }

我得到以下警告:

warning: 'long long' is incompatible with C++98 [-Wc++98-compat-pedantic]

这是诊断错误吗?(c++ 11模式下-Wc++98-compat-pedantic包含在-Weverything中)

复制到这里

不尽然。

即使你已经指定了标准是c++ 11,你也明确地说你想要启用所有警告。

引用文档:

除了传统的-W标志,还可以启用所有标志通过传递诊断-一切。这可以像预期的那样工作-Werror,还包括来自-pedantic的警告。

这对你使用什么标准来编译没有影响,-Wc++98-compat-pedantic 显式地说"检查我的代码是否与c++ 98兼容",所以这就是它的作用。

最新更新