#define adr(x) ((word) &(x)) char tmsec[20]; struct par_struct AL[] = { //par.nr, lv, ln, eh, adress bk, pt, ft { 1, 2, 8, 0, 0, ptUSER, 40}, { 2, 2, 8, 0, 0, ptUSER, 41}, { 3, 2, 1, 0, 0, ptUSER, 42}, { 4, 0, 0, 1, adr(Tmsec), };
You're interpreting the standard better than my memory did, Mike. The address itself would have been eligible for an initializer, but the cast turned it into an implementation-defined thing, which the implementation can rightfully refuse to allow in an initializer. And of course, as soon as keywords like 'near' or 'far' become involved, you're well outside the region where any language standard would apply in the first place.