[SOLVED. РЕШЕНО] gcc>4.3.2 и warn_unused_result
alexpro 8 Августа, 2010 - 12:14
Доброго времени суток всем!
В gcc старше 4.3.2 появилась новая проверка (и warning к ней). Суть ее в том, что компилер смотрит, есть ли в коде проверка результата выполнения какой-либо функции, и если ее нет, то выдает предупреждение. Например:
int foo() { FILE* f; char str[1024]; ... fgets(str,1024,f); printf("%s\n",str); ... }
На строку, где fgets() выдается warning, что игнорируется результат выполнения функции, которая определена с директивой warn_unused_result. На сколько я понял, -Wno-unused-result комьюнити все-таки выбило из разработчиков... Но когда стабилизируется в gentoo та версия gcc?
Никто не знает, как можно отключить этот warning?
»
- Для комментирования войдите или зарегистрируйтесь
Может все же стоит поправить
Может все же стоит поправить его, а не игнорировать эти предупреждения?
Если же все же нужно проигнорировать то можно использовать флаг
-D_FORTIFY_SOURCE=0
или в файле до включение header'а содержащего декларацию сабжевой функции вставить
#undef _FORTIFY_SOURCE
Почему спросил про
Почему спросил про игнорирование... Тем исходникам, которые выдают этот варн, уже много лет. Проверены постоянной эксплуатацией и я прекрасно знаю, что делается в том или ином месте кода. Править исходник, который неизменен уже многие годы только ради избавления от варна как-то неправильно, тем более, что есть номер версии, дата. Менять номер версии только из-за добавления тупой проверки, которая там нужна как зайцу стоп-сигнал не хочется.
Что раздражает - каждый новый gcc неизменно находит новые поводы для варнов. Я понимаю - исправлять в коде, который в разработке или в отладке. Но когда давным-давно проверенный и годами успешно эксплуатируемый код править под каждый новый компилятор - это перебор.
В любом случае спасибо за совет, я проверю этот способ.
ну тогда ясно, а чем
ну тогда ясно, а чем предупреждения тогда мешают? просто интересно
Спасибо еще раз, ваш совет
Спасибо еще раз, ваш совет сработал.
Они не мешают, просто при сборке этих исходников с отладкой у меня установлен ключ -Werror. Соответственно, вылетает компиляция. В общем - проще сделать патч и версию ebuild-a "r[n]"не меняя самих исходников. Я так делаю уже пятый, по-моему, раз.
с отладкой? я чего-то
с отладкой? я чего-то наверное не понял, вы ж сказали что все отлажено годы назад? какой вообще смысл в -Werror если при этом вы тупо игнорируете эти самые ворнинги? Как бы ставить -Werror и выключать _FORTIFY_SOURCE мягко говоря не логично. Это какойто самообман.
Есть крайне старые либы. Я
Есть крайне старые либы. Я уже и не помню, в каком году начатые, ядро было по-моему 2.0.29 в то время. Иногда, если делаю что-то, используя эти либы, нужно в них включать отладку, дабы видеть что происходит. Если интересно, конкретно что именно - писал для себя функции для перечисления процессов и всяческой информации о них, еще перечисления сетевых устройств и их настроек. А также много всякого. Не знаю, возможно сейчас уже и есть что-то сделанное профессионалами в этом направлении, но я привык к своему.
Пускай код не на "нормальном" языке, как здесь уже заметили, изменять я его не хочу. Хотя бы потому, чтобы оставить все как есть на память о тех временах. А варны тоже не люблю.
Что раздражает - каждый новый
Пиши на нормальном языке с соблюдением стандартов. И нечего пенять на зеркало .
если ЭТО - код на правильных крестах - то я балерина
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
На зеркало никто не пеняет.
На зеркало никто не пеняет. Код написан для себя и под себя. Никому тем более за деньги это не продается. Недостатки как самого кода, так и реализации конкретно приведенной версии я понимаю. Зачем махать шашкой?
-D_FORTIFY_SOURCE=0 Спасибо
Спасибо вам большое, дорогие мои программеры. От админов всего мира вам низкий поклон.Вы как всегда на своей волне - лиш бы собиралось и
у вас на машинке работало - а дальше типо есть низкооплачиваемый суппорт, идиоты-юзеры и придурки-админы.
Пусть они и разбираются, им типа за это деньги платят ?
P.S не думайте что это конкретно про кого то - собирательный образ, так сказать.
А теперь тут рассказываем, чаго вы D_FORTIFY_SOURCE=0 вместо D_FORTIFY_SOURCE=2 наделали :)
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
Нет никакого суппорта, никто
Нет никакого суппорта, никто никому не платит. Делается для себя, без претензий на гениальность. А "придурок-админ" - это я, который 13 лет тому назад не видел многого из того, чего хотелось бы здесь и сейчас. Вот и попробовал сделать хоть что-то. В т.ч. - этот самый htbstat был первоначально написан в 1997г., и насколько я понимаю, до сих пор альтернатив нет. И если какому-то "придурку-админу" удобно читать вывод 'tc -s class show' + 'tc -s filter show' - попутного ветра.
В любом случае, спасибо за оценку.
Ну да, именно из-за нас
Ну да, именно из-за нас кустарей все в мире кувырком. Может, и нет у нас научных степеней, но что бы делали вы, болезные? (шутка).
Я сам тоже мАху дал. Забыл поставить статус "SOLVED".