November 2019

S M T W T F S
      12
34 5 678 9
10111213141516
17181920212223
24252627282930

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Sunday, November 25th, 2012 10:20 pm

Кто-нибудь знает, зачем нужна выделенная строчка? Бывают случаи, когда приходится писать бессмысленный код, чтобы компилятор не выдавал предупреждений, но про неиспользуемые аргументы функции он вроде и так не ругается, даже с -Wall. Так зачем?

signal(SIGINT, handle_sigint);
...
static void handle_sigint(int sig)
{
  (void)sig;
  error("Interrupted by SIGINT\n");
  ...
  exit(2);
}

Оригинал этой записи в личном блоге.
Любые материалы из этого блога запрещается использовать на сайте livejournal.ru в любой форме и любом объёме.

Thursday, November 29th, 2012 11:20 am (UTC)
Так, что разработчик должен подтвердить, что аргумент не используется сознательно.
Если бы он не использовал его случайно, то получил бы warning, а еще лучше error, с -Werror.
Thursday, November 29th, 2012 01:26 pm (UTC)
Если -Wall нет, тогда возможно это просто warning workaround. Возможно, какой-то компилятор ругался по умолчанию. Какие так делают - не знаю.

Документация gcc запутана. В части про -Wextra написано, что -Wunused-parameter включается -Wextra только при использовании с -Wunused или -Wall. В части про -Wunused написано: "All the above -Wunused options combined", но: "In order to get a warning about an unused function parameter, you must either specify -Wextra -Wunused (note that -Wall implies -Wunused), or separately specify -Wunused-parameter."

Я так понял, что -Wunused включает -Wunused-parameter только вместе с -Wextra. Так как -Wall подразумевает -Wunused, то "-Wall -Wextra" тоже включает -Wunused-parameter.