Рассмотрим следующий main()
:Что делает (void) var на самом деле?
int main(int argc, char *argv[])
{
return (0);
}
При компиляции с cc -Wall -Wextra
, предупреждения говоря "не используется параметр" получить сгенерированные.
Когда мне не нужно использовать параметр в функции (например, в signal handler function, что не использует его параметра int
), я привык делать следующее:
int main(int argc, char *argv[])
{
(void)argc;
(void)argv;
return (0);
}
(для этого конкретного
main()
, я иногда вижу другие люди:argv = argv - argc + argc
)
Но , что делает (void)var
фактически do?
Я понимаю, что (void)
- это отливка, поэтому, я думаю, я отбрасываю переменную? Что делает линия var;
(без актеров)? Это пустое задание, пустое выражение?
Я хотел бы понять, что на самом деле происходит.
Если выражение не имеет Левое и не вызов функции, то 'выражение;' это заявление без эффекта. Он ничего не делает. Написание '(void) expr;' отменяет предупреждение оператора без эффекта. Написание инструкции без эффекта, включающей выражение expr', замалчивает предупреждения, связанные с использованием 'expr' в функции, в которой в списке параметров появляется выражение' expr'. – Brandin