Search
Write a publication
Pull to refresh

Comments 18

Похоже в Amazon разработчики уже разучились нормально писать на Си.

Если приводимые структуры имеют одинаковое выравнивание – значит, такое приведениене является ошибкой. И я не нашел ни одного опасного приведения!

Тут пропала частица «не» или я тупой?
Тут пропал пробел перед этой частицей. Спасибо за внимательность!
Так как встроенный булев тип в языке Си отсутствует, то для удобства определяют вот такие константы:

А как же тип _Bool?!
Ну или bool из stdbool, если делать более стильно, модно и молодёжно

А не хотели бы вы посмотреть sel4? Отличаются от остальных тем что у них задекларировано формальное доказательство корректности кода. Теоретически кол-во ошибок там должно быть равно 0, а вот будет ли так же на практике?
PS Буду с удовольствием читать все статьи о проверки эмбедед ос.

Безотносительно к качеству — народ как-то не очень доволен FreeRTOS — forum.ixbt.com/topic.cgi?id=48:11736 шедулер много времени занимает, и прерывания блочатся при этом…
Безотносительно к вам — народ там просто не умеет ее готовить
Просто нужно правильно подготовить само железо для ее использования. Прерывания, которые вызывают процедуры FreeRTOS должны быть по приоритету ниже шедулера, а те, которые не вызывают, могут иметь более высокий приоритет и не будут блочиться при этом.

GGribkov, извините за оффтоп.


А может ли PVS-Studio помочь с оптимизацией заголовочных файлов? И, как следствие, со временем и качеством (пере)сборки.


  1. Обнаружить недостающие
    1.1 Безусловно — без них не проходит минимальная компиляция #include + main()
    1.2 Условно 1 — без них проходит минимальная компиляция #include + main(), но, например, необъявленный класс используется в макросе или шаблоне
    1.3 Условно 2 — без них не проходит минимальная компиляция #include + main(), но вместо #include можно обойтись предварительным объявлением (forward declaration)


  2. Обнаружить лишние:
    2.1 Безусловно — без них проходит минимальная компиляция #include + main()
    2.2 Условно 1 — без них проходит минимальная компиляция #include + main(), но необъявленный класс используется в макросе или шаблоне
    2.3 Условно 2 — без них не проходит минимальная компиляция #include + main(), но #include можно заменить предварительным объявлением (forward declaration)


А эта фунциональность кажется вам интересной? Полезной? Осуществимой?


  • А может быть вам известны реализации подобного?
Эта функциональность интересная, но весьма сложна в реализации. Более того, она не будет точна. Например, в одном режиме компиляции h-файл может быть не нужен, но он нужен в другом режиме и удалять его нельзя.

Большинство (?) диагностик PVS-Studio не имеют 100% точности, так что это ещё не причина умывать руки :)


Удалять и не надо. Либо пользователь отметит это предупреждение как false positive, либо, если возможно, добавит вокруг что-то вроде #if[n]def _DEBUG


Когда-то, лет 15 назад, для проекта с ~1000 headers я написал скрипт, который нашел минимальный набор (в самом грубом приближении) перебором — просто удаляя и добавляя #include и пробуя компилировать с пустым main(). Тогда, емнип, время сборки уменьшилось на ~20%, и размеры на ~10%. С вашей базой можно добиться куда большего ;)


В общем, может эта идея и пригодится когда-нибудь.

размеры на ~10%
Я думал линковщик с компиляторов лишние include умеют прибивать, а тут вот как.
скорее всего какие-то следы дебажной информации (имена неиспользуемых перечислений, или функций) остались. Иначе — странно.
Sign up to leave a comment.