-
- И вопрос такой - а где находится этот костыль? Ты решил менять
файлы библиотек? - RxTx(25.09.2020 02:10)
- Не понял вопрос. Макрос, который я поправил, находится в заголовочном файле конфигурации для переферийной библиотеки "stm32l1xx_conf.h". Частью библиотеки он не является (?) и лежит рядом с заголовочным файлом проекта "main.h" В нём перечисляется периферия, используемая в проекте и этот самый "#define assert_param(expr)" . И там же можно активировать флаг "использовать библиотеку" (по умолчанию закомментирован). Имея костыль, файлы библиотек менять не teap0t(273 знак., 26.09.2020 07:54, ссылка)
- К тебе два вопроса на засыпку ;) Какой смысл имеет (или можно так -
во что скомпилируется?) код: RxTx(136 знак., 25.09.2020 01:37)
- Этот вопрос я тоже не понял, но схитрил и проверил компилятором.
Получил то же самое, но без защитной обёртки (без подавления
ошибок). Вот так выглядит вызов после препроцессора: teap0t(1629 знак., 25.09.2020 09:08 - 09:16)
- (void)0 - пустое выражение, хак, компилер не генерирует код. Макро
можно было просто сделать пустым и в локальном случае это может
сработать, но не во всех. Проблема будет там, где пустой макрос
будет включен в код. RxTx(412 знак., 25.09.2020 17:29)
- Получается как в известном анекдоте. "Я только час русский, но как же я вас жидов ненавижу!" Только, панимаешь, нАчал, и на тебе! "Семантика", ёшкин кот! Этот херов (void)0 не я придумал. Я ещё маленький. Я честно всё списал у ST и по вами же подсунутой (о боги! сколько коварства!) ссылке на материал по макросам. - teap0t(25.09.2020 20:02 - 26.09.2020 08:00, ссылка)
- Кстати, а вариант do ; while(0) не был бы лучше в качестве пустышки? - VLLV(26.09.2020 00:00)
- Я так понял, ему именно запятые между ассертами хотелось. Зачем --
непонятно. - SciFi(25.09.2020 09:09)
- Ага. Но я могу прикинуться шлангом и продемонстрировать исходник. - teap0t(25.09.2020 09:12)
- (void)0 - пустое выражение, хак, компилер не генерирует код. Макро
можно было просто сделать пустым и в локальном случае это может
сработать, но не во всех. Проблема будет там, где пустой макрос
будет включен в код. RxTx(412 знак., 25.09.2020 17:29)
- Этот вопрос я тоже не понял, но схитрил и проверил компилятором.
Получил то же самое, но без защитной обёртки (без подавления
ошибок). Вот так выглядит вызов после препроцессора: teap0t(1629 знак., 25.09.2020 09:08 - 09:16)
- Потом вы берете код с ассертами, который как-бы соответствует
мисре, вставляете в другой проект, который тоже должен ей
соответствовать, но без дефайна. И все ломается. Может проще
ассерты скриптом выпилить? - s_h_e(24.09.2020 17:53)
- Этот вариант был оставлен на "потом", если решение не найдётся.
Решение нашлось. Обучение идёт, опыт появляется... А как взять код
с ассертами без дифайна? assert_param(expr) при этом повисает в воздухе. Код вот так выглядит: teap0t(349 знак., 24.09.2020 18:26)
- Не знаю, наверное никак. s_h_e(179 знак., 24.09.2020 18:32)
- Вроде бы мисра -- это за всё хорошее и против всего плохого. И вот
под флагом мисры предлагается выпилить ассерты, что есть
безусловное зло. Впрочем, кого это может удивить? - SciFi(24.09.2020 17:58)
- Я не уверен, что это за все хорошее. s_h_e(127 знак., 24.09.2020 18:01)
- Этот вариант был оставлен на "потом", если решение не найдётся.
Решение нашлось. Обучение идёт, опыт появляется... А как взять код
с ассертами без дифайна? assert_param(expr) при этом повисает в воздухе. Код вот так выглядит: teap0t(349 знак., 24.09.2020 18:26)
- Если быть до конца принципиальным, то выключая проверку, надо
оставлять в комментариях пояснения, зачем и на основании чего её
выключили. Вплоть цитат со ссылкой на интернет-конференцию, где
обсудили вопрос. - Nikolay_Po(24.09.2020 17:30)
- Это да, но пока речь только о коде. Документирование таких финтов - одно из требований той же MISRA. - teap0t(24.09.2020 17:36)
- Разве в окне MISRA нельзя снять плюсик контроля? Или нужны шашечки? - VLLV(24.09.2020 17:27)
- Семён Семёныч! Но шашечки тоже пригодятся. UPD. Предлагаемый способ
не отключает предупреждения совсем, но затеняет одну лишь нужную
команду. Так что, не шашечки это. - teap0t(24.09.2020 17:31 - 17:40)
- "0 warnings" сомнительное достижение, но достижение, тем не менее
:-) - SciFi(24.09.2020 17:32)
- Фиксирую
первуювторую победу. Первой было исправление ошибки в показаниях температуры. Я молодец. - teap0t(24.09.2020 17:38) - Нифига не сомнительное, а нужное и полезное. - Nikolay_Po(24.09.2020 17:34)
- Фиксирую
- Шашечки - для слабаков. К тому же, они бывают в руках у проверяющего. Поэтому нужно выкручиваться своими силами. - Nikolay_Po(24.09.2020 17:32)
- "0 warnings" сомнительное достижение, но достижение, тем не менее
:-) - SciFi(24.09.2020 17:32)
- Семён Семёныч! Но шашечки тоже пригодятся. UPD. Предлагаемый способ
не отключает предупреждения совсем, но затеняет одну лишь нужную
команду. Так что, не шашечки это. - teap0t(24.09.2020 17:31 - 17:40)
- И вопрос такой - а где находится этот костыль? Ты решил менять
файлы библиотек? - RxTx(25.09.2020 02:10)