|
Люблю я это дело.
Причём с выдачей хоть немного осмысленной диагностики, а не просто светодиодом помигать. Поскольку на 7-сегментный светодиодный индикатор не сильно напечатаешь *имя* файла, это делаю так:
utils.h
/* создаём такой енумчик - по номеру на каждый файл */
enum { MAIN_C = 1, UTIL_C, FMEM_C, METER_C, CONFIG_C, MODEMIO_C };#define CURFILE 0 /* 0 на случай, если забудется задать */
#ifdef USE_ASSERT
#define assert(p) { if( !(p) ) AssertHalt( CURFILE, __LINE__ ); }
void AssertHalt(u8 fil, u16 line);
#else
#define assert(p)
#endif
AssertHalt рисует на 7-сегментном индикаторе буквочки AF, выводит
fil и line как числа и делает Halt(), который, в свою очередь, гасит всё, что можно и крутится в бесконечном цикле.
Ну и в каком-нибудь config.c
#undef CURFILE
#define CURFILE CONFIG_C...
assert(paramnum <= CONFIG_MAX_PAR);
...
E-mail: info@telesys.ru