Страницы

Поиск по вопросам

среда, 12 декабря 2018 г.

Неиспользуемые переменные

Доброго времени суток!
Подскажите пожалуйста, читаю книгу Герба Саттера, и он пишет такой код:
int a = 10; a; //для подавления предупреждения о неиспользуемой переменной
Вопрос: для чего подавлять это предупреждение? Разве это на что то повлияет?


Ответ

К сожалению, информация в этой книге явно устарела. Подавление предупреждения о неиспользованной переменной (или параметре) путем написания выражения, где кроме этой переменной ничего нет, приведет к появлению предупреждений а бесполезном выражении
Для подавления предупреждения раньше следовало использовать приведение переменной к void: static_cast(a); (обычно обoрачивается в макрос типа UNUSED_VAR). В этом случае никаких предупреждений не последует
В современном С++ появился способ отметить переменную как специально неиспользованную. Для этих целей предусмотрен стандартный аттрибут 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 }

Комментариев нет:

Отправить комментарий