Этот вариант был оставлен на "потом", если решение не найдётся.
Решение нашлось. Обучение идёт, опыт появляется... А как взять код
с ассертами без дифайна? assert_param(expr) при этом повисает в воздухе. Код вот так выглядит: #ifdef USE_FULL_ASSERT
#define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))
void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) do {_Pragma ("diag_suppress=Pm049") \
((void)0); \
_Pragma ("diag_default=Pm049") } while ( 0 )
#endif /* USE_FULL_ASSERT */