juvf 17 30 сентября, 2020 Опубликовано 30 сентября, 2020 · Жалоба объявлена функция void f(int a); определена так void f(int a) { } компилятор СИ дает ворнинг - неиспользуемая переменная. переопределил так void f(int) { } компилятор дает ошибку parameter name omitted. костыль исправляет ситуацию void f(int a) { (void)a; } как ещё можно решить проблему? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
arhiv6 20 30 сентября, 2020 Опубликовано 30 сентября, 2020 · Жалоба void f(__attribute__((unused)) int a) { } Но не все компиляторы этот атрибут поддерживают. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 30 сентября, 2020 Опубликовано 30 сентября, 2020 · Жалоба 12 minutes ago, juvf said: костыль исправляет ситуацию "Не, а чё сразу косой-то костыль?"))) Нормальное решение. Сам так делаю. Даёт наставление компилятору и статическому анализатору, что аргумент не используется, но его требуется указать, т.к. функция может вызываться и по указателю среди других, где этот аргумент используется Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 17 30 сентября, 2020 Опубликовано 30 сентября, 2020 · Жалоба 3 минуты назад, arhiv6 сказал: void f(__attribute__((unused)) int a) { } Но не все компиляторы этот атрибут поддерживают. мингв съел. спасибо. 4 минуты назад, haker_fox сказал: Нормальное решение. Сам так делаю. Даёт наставление компилятору и статическому анализатору, что аргумент не используется (void)a не дает ни каких наставлений компилятору что аргумент не используется. это "формальное использование" аргумента. Он не используется, но чтобы компилятор не ругался, ему показывают, якобы он используется. костыль. имхо. в с++ это решается проще void f(int) { } Просто в определении не указывается имя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 30 сентября, 2020 Опубликовано 30 сентября, 2020 · Жалоба 13 minutes ago, juvf said: (void)a не дает ни каких наставлений компилятору что аргумент не используется. это "формальное использование" аргумента Ну образно я выразился. С нулевым уровнем оптимизации, например, IAR генерировал вычитку аргумента "в никуда". Т.е. далее это значение просто не использовалось. Возможно, что-то путаю. Давно смотрел листинг. 14 minutes ago, juvf said: в с++ это решается проще Не знал. Однако (void)x привычнее))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться