70  #define TrackerTypeDef(num_user_vars)       \ 
   76    uint32_t user[num_user_vars];             \ 
 
   80  #define num_of_usercnts(_user_)                               (sizeof(_user_) / sizeof(uint32_t)) 
   82  #define assert_usertracker(_cntstruct_, _uservarnumb_)        ((_uservarnumb_) < num_of_usercnts((_cntstruct_).user)) 
   84  #define if_assert_usertracker(_cntstruct_, _uservarnumb_)     if(assert_usertracker(_cntstruct_, _uservarnumb_)) 
   86  #define tern_assert_usertracker(_cntstruct_, _uservarnumb_)   (assert_usertracker(_cntstruct_, _uservarnumb_)) ? _uservarnumb_ : 0 
   90  #define TrackerGet_Ok(_cntstruct_)                              (_cntstruct_).cnt_ok 
   92  #define TrackerGet_Err(_cntstruct_)                             (_cntstruct_).cnt_err 
   94  #define TrackerGet_Warn(_cntstruct_)                            (_cntstruct_).cnt_warn 
  106  #define TrackerGet_User(_cntstruct_, _uservarnumb_)             (_cntstruct_).user[tern_assert_usertracker(_cntstruct_, _uservarnumb_)] 
  111  #define TrackerCnt_Ok(_cntstruct_)                              (_cntstruct_).cnt_ok++ 
  113  #define TrackerCnt_Err(_cntstruct_)                             (_cntstruct_).cnt_err++ 
  115  #define TrackerCnt_Warn(_cntstruct_)                            (_cntstruct_).cnt_warn++ 
  117  #define TrackerCnt_User(_cntstruct_, _uservarnumb_)             if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_]++; 
  119  #define TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_)    if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_] = (_val_) 
  122  #define TrackerClear_All(_cntstruct_)                           memset(&(_cntstruct_), 0, sizeof(_cntstruct_)) 
  124  #define TrackerClear_Ok(_cntstruct_)                            (_cntstruct_).cnt_ok = 0 
  126  #define TrackerClear_Err(_cntstruct_)                           (_cntstruct_).cnt_err = 0 
  128  #define TrackerClear_Warn(_cntstruct_)                          (_cntstruct_).cnt_warn = 0 
  130  #define TrackerClear_User(_cntstruct_, _uservarnumb_)           if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_] = 0; 
  132  #define TrackerClear_UserAll(_cntstruct_)                       memset(&(_cntstruct_).user, 0, sizeof((_cntstruct_).user)) 
  136  #define TrackerTypeDef(num_user_vars) void * 
  138  #define num_of_usercnts(_user_)                               0 
  139  #define assert_tracecnt(_cntstruct_, _uservarnumb_)           0 
  140  #define if_assert_usertracker(_cntstruct_, _uservarnumb_)     if(0) 
  141  #define tern_assert_usertracker(_cntstruct_, _uservarnumb_)   0 
  143  #define TrackerGet_Ok(_cntstruct_)                            dummy 
  144  #define TrackerGet_Err(_cntstruct_)                           dummy 
  145  #define TrackerGet_Warn(_cntstruct_)                          dummy  
  146  #define TrackerGet_User(_cntstruct_, _uservarnumb_)           dummy 
  148  #define TrackerCnt_Ok(_cntstruct_)                               
  149  #define TrackerCnt_Err(_cntstruct_)                              
  150  #define TrackerCnt_Warn(_cntstruct_)                             
  151  #define TrackerCnt_User(_cntstruct_, _uservarnumb_)                  
  152  #define TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_) 
  154  #define TrackerClear_All(_cntstruct_)                         
  155  #define TrackerClear_Ok(_cntstruct_)                          
  156  #define TrackerClear_Err(_cntstruct_)                         
  157  #define TrackerClear_Warn(_cntstruct_)                        
  158  #define TrackerClear_User(_cntstruct_)                        
  159  #define TrackerClear_UserAll(_cntstruct_)                     
Заголочный файл для дефайнов библиотеки MyLibsGeneral.