November 2019

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

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 в любой форме и любом объёме.

Monday, November 26th, 2012 03:19 am (UTC)
не ругается эта версия -- ругалась предыдущая. или с другими параметрами (-Wall, не смотря на свое название, включает не все ворнинги). или другой компилятор. или lint. или еще что-то чем пользовались авторы этого кода.
Monday, November 26th, 2012 12:55 pm (UTC)
Удваиваю.

Строчка вполне могла остаться от коммита 2000го (допустим) года. Она сейчас никому не мешает и про неё не вспоминают.

Что это за проект?
Edited 2012-11-26 12:56 pm (UTC)
Monday, November 26th, 2012 03:42 am (UTC)
Специфическое выравнивание стека?
Monday, November 26th, 2012 08:53 am (UTC)
GCC с -pedantic должен ругаться, но есть и не только gcc :)
Monday, November 26th, 2012 11:09 am (UTC)
Да мало ли где этот код изначально был. Когда-то давно видел даже обёртку cpp, которая во всех функциях вставляла a=a; b=b; ... (где a,b,... - аргументы) :-) ЕМНИП, для перетаскивания кода под Watcom это делалось, вот он на это матерится точно.
Wednesday, November 28th, 2012 06:51 pm (UTC)
Это часть достаточно распостраненного метода отслеживать неиспользуемые аргументы функций. Другая часть - -Wall или -Wunused.
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.