Перейти к содержанию
    

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

объявлена функция

void f(int a);

определена так

void f(int a)

{

}

 

компилятор СИ дает ворнинг - неиспользуемая переменная.

переопределил так

void f(int)

{

}

компилятор дает ошибку parameter name omitted.

костыль исправляет ситуацию

void f(int a)

{

     (void)a;

}

 

как ещё можно решить проблему?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

void f(__attribute__((unused)) int a)
{

}

Но не все компиляторы этот атрибут поддерживают.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 minutes ago, juvf said:

костыль исправляет ситуацию

"Не, а чё сразу косой-то костыль?"))) Нормальное решение. Сам так делаю. Даёт наставление компилятору и статическому анализатору, что аргумент не используется, но его требуется указать, т.к. функция может вызываться и по указателю среди других, где этот аргумент используется

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, arhiv6 сказал:

void f(__attribute__((unused)) int a)
{

}

Но не все компиляторы этот атрибут поддерживают.

мингв съел. спасибо.

4 минуты назад, haker_fox сказал:

Нормальное решение. Сам так делаю. Даёт наставление компилятору и статическому анализатору, что аргумент не используется

(void)a не дает ни каких наставлений компилятору что аргумент не используется.  это "формальное использование" аргумента. Он не используется, но чтобы компилятор не ругался, ему показывают, якобы он используется. костыль. имхо.

в с++ это решается проще

void f(int)

{

}

Просто в определении не указывается имя.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 minutes ago, juvf said:

(void)a не дает ни каких наставлений компилятору что аргумент не используется.  это "формальное использование" аргумента

Ну образно я выразился. С нулевым уровнем оптимизации, например, IAR генерировал вычитку аргумента "в никуда". Т.е. далее это значение просто не использовалось. Возможно, что-то путаю. Давно смотрел листинг.

14 minutes ago, juvf said:

в с++ это решается проще

Не знал. Однако (void)x привычнее)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...