Как избежать предупреждения при использовании прицела?
Я использую защиту от глупости, она работает, но выдает предупреждение о том, что переменная не используется:
warning: unused variable ‘g’ [-Wunused-variable]
Код:
folly::ScopeGuard g = folly::makeGuard([&] {close(sock);});
Как избежать такого предупреждения?
2 ответа
Вы можете отключить это предупреждение -Wno-unused-variable
хотя это немного опасно (вы теряете все действительно неиспользуемые переменные).
Одно из возможных решений - использовать переменную, но ничего с ней не делать. Например, в случае аннулирования:
(void) g;
который можно превратить в макрос:
#define IGNORE_UNUSED(x) (void) x;
В качестве альтернативы вы можете использовать метод повышения: объявите шаблонную функцию, которая ничего не делает, и используйте ее
template <typename T>
void ignore_unused (T const &) { }
...
folly::ScopeGuard g = folly::makeGuard([&] {close(sock);});
ignore_unused(g);
Вы можете просто пометить переменную как неиспользуемую:
folly::ScopeGuard g [[gnu::unused]] = folly::makeGuard([&] {close(sock);});
Или брось это, чтобы аннулировать
folly::ScopeGuard g = folly::makeGuard([&] {close(sock);});
(void)g;
И то и другое не очень хорошо, но, по крайней мере, это позволяет вам хранить предупреждения.