在 clang 中,可以像这里描述的那样忽略警告。
在我的例子中,如果代码直接包含在编译指示中(参见
一般情况下,我希望为该函数提供警告,但我不想为其所在的整个文件禁用警告。因此,是否有一种方法可以针对每个使用情况禁用警告?
在我的例子中,如果代码直接包含在编译指示中(参见
(1)
),则可以正常工作。但是,在函数(3)
中出现问题的代码不适用于(2)
。只有当我将该函数用编译指示括起来(注释掉)时,才会忽略警告。如果该函数在头文件中,则还可以用编译指示括起#include
。一般情况下,我希望为该函数提供警告,但我不想为其所在的整个文件禁用警告。因此,是否有一种方法可以针对每个使用情况禁用警告?
#include <iostream>
// #pragma clang diagnostic push
// #pragma clang diagnostic ignored "-Wfloat-equal"
template <class T>
bool compare (const T lhs, const T rhs)
{
return lhs == rhs; // (3)
}
// #pragma clang diagnostic pop
int main ()
{
const float a = 1.1f, b = 1.1f;
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wfloat-equal"
const bool eq1 = a == b; // (1)
#pragma clang diagnostic pop
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wfloat-equal"
const bool eq2 = compare (a, b); // (2)
#pragma clang diagnostic pop
std::cout << eq1 << " " << eq2 << std::endl;
return 0;
}
使用-Weverything
编译