juvf 24 September 30, 2020 Posted September 30, 2020 · Report post объявлена функция void f(int a); определена так void f(int a) { } компилятор СИ дает ворнинг - неиспользуемая переменная. переопределил так void f(int) { } компилятор дает ошибку parameter name omitted. костыль исправляет ситуацию void f(int a) { (void)a; } как ещё можно решить проблему? Quote Share this post Link to post Share on other sites More sharing options...
arhiv6 26 September 30, 2020 Posted September 30, 2020 · Report post void f(__attribute__((unused)) int a) { } Но не все компиляторы этот атрибут поддерживают. Quote Share this post Link to post Share on other sites More sharing options...
haker_fox 162 September 30, 2020 Posted September 30, 2020 · Report post 12 minutes ago, juvf said: костыль исправляет ситуацию "Не, а чё сразу косой-то костыль?"))) Нормальное решение. Сам так делаю. Даёт наставление компилятору и статическому анализатору, что аргумент не используется, но его требуется указать, т.к. функция может вызываться и по указателю среди других, где этот аргумент используется Quote Share this post Link to post Share on other sites More sharing options...
juvf 24 September 30, 2020 Posted September 30, 2020 · Report post 3 минуты назад, arhiv6 сказал: void f(__attribute__((unused)) int a) { } Но не все компиляторы этот атрибут поддерживают. мингв съел. спасибо. 4 минуты назад, haker_fox сказал: Нормальное решение. Сам так делаю. Даёт наставление компилятору и статическому анализатору, что аргумент не используется (void)a не дает ни каких наставлений компилятору что аргумент не используется. это "формальное использование" аргумента. Он не используется, но чтобы компилятор не ругался, ему показывают, якобы он используется. костыль. имхо. в с++ это решается проще void f(int) { } Просто в определении не указывается имя. Quote Share this post Link to post Share on other sites More sharing options...
haker_fox 162 September 30, 2020 Posted September 30, 2020 · Report post 13 minutes ago, juvf said: (void)a не дает ни каких наставлений компилятору что аргумент не используется. это "формальное использование" аргумента Ну образно я выразился. С нулевым уровнем оптимизации, например, IAR генерировал вычитку аргумента "в никуда". Т.е. далее это значение просто не использовалось. Возможно, что-то путаю. Давно смотрел листинг. 14 minutes ago, juvf said: в с++ это решается проще Не знал. Однако (void)x привычнее))) Quote Share this post Link to post Share on other sites More sharing options...