如果不在clang命令行中,此构建标志从何而来

问题描述

我有一个clang构建线,看起来像这样:

bin/clang++ -Werror=foo -Wno-bar...

等。基本上有很多警告和错误标志。好的,这很有道理。然后,我得到一个错误,例如:

error: implicit conversion loses integer precision: 'ulong' (aka 'unsigned long') to 'int') [-Wshorten-64-to-32]

在上面的clang ++命令中,-Wshorten-64-to-32不是标志。因此它必须来自该行之外的某个地方。 clang可以使用命令行之外的标志吗?我的理解是,它正在使用的所有标志都将直接打印在该命令上。

解决方法

默认情况下,许多警告处于启用状态,而其他警告则由-Wall-Wextra等选项启用,这些选项可一次隐式启用多个警告类别。

报告了警告类别-Wshorten-64-to-32,以便您可以通过在命令行中添加-Wno-shorten-64-to-32来关闭不喜欢的特定警告。