Как избежать предупреждения при использовании прицела?

Я использую защиту от глупости, она работает, но выдает предупреждение о том, что переменная не используется:

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;

И то и другое не очень хорошо, но, по крайней мере, это позволяет вам хранить предупреждения.

Другие вопросы по тегам