Иногда сложно добиться отсутствия зависимостей. Да и надо ли?
Мы у себя похожий подход как у автора используем, удобно особенно если количество библиотек за сотню
Вы очень зря иронизируете. Вот идея для стартапа, которую вы возможно рассматривали но в итоге проигнорировали.
Посмотрите на решения вроде TravisCI, CircleCI и иже с ними, для opensource бесплатно, а если нужно для комерческого использования? Будь так любезный и купи подписку.
Это заблуждение или как говорят, ваши коллеги скорее всего не умеют готовить embedded проекты на С++.
Стандартная либа в таких проектах обычно не используется, а вот все плюшки языка доступны
Возможно автор хотел сказать что if (strcmp(s, r) == 0) наиболее часто использующийся случай для проверки равны ли строки. Я бы наверное оформил это таким образом
if (strcmp(s, r) ==0 ) — проверить равны ли строки
if (strcmp(s, r) !=0 ) — проверть не равны ли строки
А так да, говорить что if(strcmp(s,r)==0) неверно, неверно :)
Мы делаем следующим образом (и вроде Keil RTX так же умеет)
При аллокации стека к размеру добавляем footer в котором содержится некий magic number. При переключении контекста начало и размер стека известны, соответственно можно проверить значение в футере и таким образом предположить было ли переполнение.
До сих пор удивляюсь, почему в CPU для embedded без MMU нету например вот такого решения stack limit.
Аппаратная проверка на каждом push/pop (STM/LDR для Cortex-M) вместо программных костылей imho намного эффективнее.
Кстати решение с переносом стека в начало RAM работает только если стек один. Когда на борту RTOS данный подход не поможет. -finstrument-functions к сожалению также не совсем панацея (разве что вместе с проверкой границ стека во время context switch) так как позволяет проверять стек только на границах функции и если переполнение произошло по середине с последующим pop то содержимое памяти уже повреждено, а мы об этом не знаем :(
А в целом статья поднимает интересную тему, спасибо.
UPD: ARMv8-M поддерживает stack limit. Ждем STM32 на новой архитектуре
Насколько понимаю CppCat урезанная версия PVS-Studio, соответственно другая ветка кода, дополнительная команда, тестирование и т.д. А если продавать тот же PVS-Studio, но для индивидуальных разработчиков?
Относительно лицензии для индивидуальный разработчиков, я бы с довольствием приобрел если бы она стоила 100-200 у.е. даже в варианте подписки на год.
Вы не хотели бы рассмотреть вариант подписок которые предлагает например JetBrains для своих продуктов?
Мы у себя похожий подход как у автора используем, удобно особенно если количество библиотек за сотню
Посмотрите на решения вроде TravisCI, CircleCI и иже с ними, для opensource бесплатно, а если нужно для комерческого использования? Будь так любезный и купи подписку.
Стандартная либа в таких проектах обычно не используется, а вот все плюшки языка доступны
if (strcmp(s, r) ==0 ) — проверить равны ли строки
if (strcmp(s, r) !=0 ) — проверть не равны ли строки
А так да, говорить что if(strcmp(s,r)==0) неверно, неверно :)
При аллокации стека к размеру добавляем footer в котором содержится некий magic number. При переключении контекста начало и размер стека известны, соответственно можно проверить значение в футере и таким образом предположить было ли переполнение.
До сих пор удивляюсь, почему в CPU для embedded без MMU нету например вот такого решения stack limit.
Аппаратная проверка на каждом push/pop (STM/LDR для Cortex-M) вместо программных костылей imho намного эффективнее.
Кстати решение с переносом стека в начало RAM работает только если стек один. Когда на борту RTOS данный подход не поможет.
-finstrument-functions к сожалению также не совсем панацея (разве что вместе с проверкой границ стека во время context switch) так как позволяет проверять стек только на границах функции и если переполнение произошло по середине с последующим pop то содержимое памяти уже повреждено, а мы об этом не знаем :(
А в целом статья поднимает интересную тему, спасибо.
UPD: ARMv8-M поддерживает stack limit. Ждем STM32 на новой архитектуре
Вы не хотели бы рассмотреть вариант подписок которые предлагает например JetBrains для своих продуктов?
№ заказа: 7941569672