LINUX.ORG.RU

История изменений

Исправление firkax, (текущая версия) :

Посмотрел ссылку, ту теперь всё ясно. Код у меня наоборот собирался, а -Wall да ещё и с версией компилятора которой на тот момент у меня не было я увидел исключительно благодаря настойчивости одного из участников, к которому у меня даже подпись имеется:

cumvillain (07.02.23 18:54:19 MSK) фанат бюрократических си-стандартов https://www.linux.org.ru/forum/development/17122046

-Wall -Werror упадёт даже на if(a || b && c), рекомендуя ставить лишние скобки, и показателем наличия проблем оно никак не может считаться, это просто параноидальный (хотя есть ещё более строгие) режим поиска подозрительного кода. Предупреждать же про то, что код зачем-то использует значение указателя после free - вполне норм, это и правда подозрительно. Нарушений же в ходе исполнения программы (если убрать -Werror), даже с -O3, там нет. Так что gcc ни в чём не виноват.

Если ты ещё не понял, то моя основная претензия к языку C как раз вот в этом: стандарт пишут шизофреники, компиляторы реализуются наркоманами, а код на этом языке потом пишут самоуверенные кретины, считающие себя гораздо умнее первых двух и забившие на чтение стандарта по этой причине. И совсем-совсем не в наличии указателей или ручной работе с памятью.

Такая тенденция к сожалению имеется, но вообще исторически gcc всегда самостоятельно добавляли в компилятор те фичи, которые считали нужными, не особо считаясь с содержимым ISO-стандарта. В отличие от clang, которые с самого начала стараются педантично ему следовать (хотя реализовывать некоторые gcc-расширения им всё равно пришлось т.к. иначе их бы не поняли).

Исходная версия firkax, :

Посмотрел ссылку, ту теперь всё ясно. Код у меня наоборот собирался, а -Wall да ещё и с версией компилятора которой на тот момент у меня не было я увидел исключительно благодаря настойчивости одного из участников, к которому у меня даже подпись имеется:

cumvillain (07.02.23 18:54:19 MSK) фанат бюрократических си-стандартов https://www.linux.org.ru/forum/development/17122046

-Wall -Werror упадёт даже на if(a || b && c), рекомендуя ставить лишние скобки, и показателем наличия проблем оно никак не может считаться, это просто параноидальный (хотя есть ещё более строгие) режим поиска подозрительного кода. Предупреждать же про то, что код зачем-то использует значение указателя после free - вполне норм, это и правда подозрительно. Нарушений же в ходе исполнения программы (если убрать -Werror), даже с -O3, там нет. Так что gcc ни в чём не виноват.

Если ты ещё не понял, то моя основная претензия к языку C как раз вот в этом: стандарт пишут шизофреники, компиляторы реализуются наркоманами, а код на этом языке потом пишут самоуверенные кретины, считающие себя гораздо умнее первых двух и забившие на чтение стандарта по этой причине. И совсем-совсем не в наличии указателей или ручной работе с памятью.

Такая тенденция к сожалению имеется, но вообще исторически gcc всегда самостоятельно добавляли в компилятор те фичи, которые считали нужными, не особо считаясь с содержимым ISO-стандарта.