GCC supports pragmas to locally control warnings.
https://gcc.gnu.org/onlinedocs/gcc-6.2.0/gcc/Diagnostic-Pragmas.html
Example:
====================================
__attribute__((__deprecated__)) int some_deprecated_function(void)
{
return 0;
};
void some_function(void)
{
int x, y;
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
x = some_deprecated_function();
#pragma GCC diagnostic pop
y = x + 1;
}
int main(int argc, char** argv)
{
return 0;
}
====================================
In the above example, call to some_deprecated_function() does not trigger deprecation warning.
'#pragma GCC diagnostic push' and '#pragma GCC diagnostic pop' are supported since GCC 4.6.0.
https://gcc.gnu.org/gcc-4.6/changes.html
'#pragma GCC diagnostic ignored' is documented in documentation of GCC since 4.2.0.
Clang supposedly supports both '#pragma GCC diagnostic ...' and '#pragma clang diagnostic ...':
http://clang.llvm.org/docs/UsersManual.html#controlling-diagnostics-via-pragmas |