我已经将SQLite合并源编译到我的iOS项目中,并clang在此行上发出警告
mask = (sizeof(long)==8) ? LARGEST_INT64 : 0x7fffffff;
Run Code Online (Sandbox Code Playgroud)
带有以下警告:
Implicit conversion from 'long long' to 'long' changes value from
9223372036854775807 to -1
[warn_impcast_integer_precision_constant]
Run Code Online (Sandbox Code Playgroud)
我已经启用-fdiagnostics-show-name了显示名称(warn_impcast_integer_precision_constant).
我当然不想改变SQLite源代码中的任何内容,因为我不想引入不可预见的副作用,所以我想为这一行禁用这个特定的警告.警告肯定是有效的,但无论如何都不能在sizeof检查到位时发生.
为了使此过程可以重现其他警告和诊断,有没有一种方法可以找出特定的警告类并禁用它们一行?不幸的是,我在所谓的clang/llvm"文档"中找不到任何东西.
ser*_*rvn 16
任何远程版本的clang应该打印与给定警告相关联的标志以及警告(在这种情况下是-Wconstant-conversion); 不知道为什么你没有看到这个.关闭它,你可以使用#pragma clang diagnostic ignored "-Wconstant-conversion".