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

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

warning: unused variable ‘g’ [-Wunused-variable]

Код:

folly::ScopeGuard g = folly::makeGuard([&] {close(sock);});

Как избежать такого предупреждения?

4

Решение

Вы можете отключить это предупреждение -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);
4

Другие решения

Вы можете просто пометить переменную как неиспользуемую:

folly::ScopeGuard g [[gnu::unused]] = folly::makeGuard([&] {close(sock);});

Или брось это, чтобы аннулировать

folly::ScopeGuard g = folly::makeGuard([&] {close(sock);});
(void)g;

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

5

По вопросам рекламы [email protected]