This macro is used to create blocks used when formatting time or date values. The definition from rt_locale.h and sample code are shown in Example 2.19.
For all the macros, the first two arguments are a symbol prefix and a locale name. The resulting locale block is addressed by the expression &symprefix_start, and the index entry by the expression &symprefix_index.
Example 2.19. LC_TIME_DEF
#define __LC_TIME_DEF(sym,ln,wa,wf,ma,mf,am,pm,dt,df,tf) static const int sym##_index = ~3 & (3 + (sizeof(wa)+sizeof(wf)+sizeof(ma)+ sizeof(mf)+sizeof(am)+sizeof(pm)+ sizeof(dt)+sizeof(df)+sizeof(tf)+ 60+(~3 & (3 + sizeof(ln))))); static const char sym##_lname[~3 & (3 + sizeof(ln))] = ln; static const int sym##_pname = ‑4‑(~3 & (3 + sizeof(ln))); static const int sym##_start = 52; static const int sym##_wfoff = (sizeof(wa)+52); static const int sym##_maoff = (sizeof(wa)+sizeof(wf)+52); static const int sym##_mfoff = (sizeof(wa)+sizeof(wf)+sizeof(ma)+52); static const int sym##_amoff = (sizeof(wa)+sizeof(wf)+sizeof(ma)+ sizeof(mf)+52); static const int sym##_pmoff = (sizeof(wa)+sizeof(wf)+sizeof(ma)+ sizeof(mf)+sizeof(am)+52); static const int sym##_dtoff = (sizeof(wa)+sizeof(wf)+sizeof(ma)+ sizeof(mf)+sizeof(am)+sizeof(pm)+52); static const int sym##_dfoff = (sizeof(wa)+sizeof(wf)+sizeof(ma)+ sizeof(mf)+sizeof(am)+sizeof(pm)+ sizeof(dt)+52); static const int sym##_tfoff = (sizeof(wa)+sizeof(wf)+sizeof(ma)+ sizeof(mf)+sizeof(am)+sizeof(pm)+ sizeof(dt)+sizeof(df)+52); \static const int sym##_wasiz = (sizeof(wa)/7); static const int sym##_wfsiz = (sizeof(wf)/7); static const int sym##_masiz = (sizeof(ma)/12); static const int sym##_mfsiz = (sizeof(mf)/12); static const char sym##_watxt[] = wa; static const char sym##_wftxt[] = wf; static const char sym##_matxt[] = ma; static const char sym##_mftxt[] = mf; static const char sym##_amtxt[] = am; static const char sym##_pmtxt[] = pm; static const char sym##_dttxt[] = dt; static const char sym##_dftxt[] = df; static const char sym##_tftxt[] = tf;