Значение переменной (void)

Возможный дубликат:
Что делает пустое литье?

Я просто просматривал проект и нашел это

//This is in a .cpp file
#if xxx == 5
(void)var;
#endif

Что делает это (void)var делать? Любое значение при этом.
Я слышал, что это как-то связано с compilation,

Добавление тегов c и cpp incase — это обычное дело.

4

Решение

(void)var;

Это утверждение фактически ничего не делает. Но помогает в заглушении компилятора.

В основном это делается, чтобы избежать неиспользуемая переменная предупреждения.


В ответ на комментарий @ vonbrand. Здесь выдуманы ситуации, когда это полезно.

  • Функция объявлена ​​в заголовочном файле. Но тело функции было изменено, и один из его параметров больше не используется. Но изменение заголовка потребует тестирования другого кода
    это использует этот заголовочный файл.
  • Новая функция написана, но параметр, который в настоящее время unsed будет использоваться, когда функция будет изменена позже. В противном случае прототип функции требуется изменить в
    заголовок и в определении.

Например, в gcc, когда опция компиляции -Werror используется по умолчанию в make-файле, и может быть нежелательно изменять его для всего проекта. Кроме того, это абсолютно безвредно
и портативный, чтобы сделать (void)var; для любой переменной. Поэтому я не понимаю, почему это была бы плохая идея, которая помогает программистам в некоторых ситуациях облегчать жизнь.

Поэтому не всегда желательно избавляться от неиспользуемых переменных. Для этого потребуется больше работы, когда это потребуется позже.

7

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

Преобразование в void выполняется, чтобы избежать предупреждения компилятора о неиспользуемой переменной.

Это также можно сделать на глобальном уровне, используя флаг компилятора: -Wno-unused-variable.

3

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