Jump to content
    

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

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

void f(int a);

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

void f(int a)

{

}

 

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

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

void f(int)

{

}

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

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

void f(int a)

{

     (void)a;

}

 

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

Share this post


Link to post
Share on other sites

12 minutes ago, juvf said:

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

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

Share this post


Link to post
Share on other sites

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

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

}

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

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

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

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

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

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

void f(int)

{

}

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

Share this post


Link to post
Share on other sites

13 minutes ago, juvf said:

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

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

14 minutes ago, juvf said:

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...