我正在检查具有类型特征的数值范围,并且无符号类型会生成警告。
Comparison of unsigned expression >= 0 is always true
如何在特定代码范围内禁用某些警告?我在 Clang 中使用了 GCC 样式#pragma
,但这不起作用。这是我的代码。
template<typename originT, typename destinationT>
void
assertForNumericRange(const originT value)
{
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wtype-limits"
assertWithReason(value >= std::numeric_limits<destinationT>::min());
assertWithReason(value <= std::numeric_limits<destinationT>::max());
#pragma GCC diagnostic pop
}
笔记
目前,我将断言分为三组,浮点数、无符号整数、有符号整数。但如果可能的话,我希望将它们合二为一。
我正在使用 Xcode 5.0 测试版。在命令行中,它会报告:Apple LLVM version
5.0 (clang-500.1.58) (based on LLVM 3.3svn)
Target: x86_64-apple-darwin12.3.0
Thread model: posix