Доброго времени суток!
Подскажите пожалуйста, читаю книгу Герба Саттера, и он пишет такой код:
int a = 10;
a; //для подавления предупреждения о неиспользуемой переменной
Вопрос: для чего подавлять это предупреждение? Разве это на что то повлияет?
Ответ
К сожалению, информация в этой книге явно устарела. Подавление предупреждения о неиспользованной переменной (или параметре) путем написания выражения, где кроме этой переменной ничего нет, приведет к появлению предупреждений а бесполезном выражении
Для подавления предупреждения раньше следовало использовать приведение переменной к void: static_cast
В современном С++ появился способ отметить переменную как специально неиспользованную. Для этих целей предусмотрен стандартный аттрибут maybe_unused: [[maybe_unused]] int a = 10;. И в этом случае никаких предупреждений не будет
Подавлять это предупреждение имеет смысл только в одном случае, когда имеется функция, результат который нельзя игнорировать, но мы намеренно хотим это сделать:
[[nodiscard]] int foo(void){ return 0; }
int main()
{
foo(); // warning: result of foo is not used
int a = foo(); // warning: unused variable a
[[maybe_unsed]] int a = foo(); // no warnings
}
Комментариев нет:
Отправить комментарий