C51 COMPILER V7.04 Follow code genearated is bad:
code struct { int i; union { char a; int b; } u; } test_array[][10] = { { {0, {0}}, } }; code char TESTCODE[] = {12,24,36,42}; TESTCODE has bad allocation. WATCH window: 'test_array | C:00x6E [] "" 'TESTCODE | C:00x6E [ ... ] This bug removed when array with specifed size: ... test_array[1][10] ...
I don't have K&R to hand, and I forget the rules about which dimension you are allowed to leave unspecified in multi-dimension definition. I guess you have the wrong one?
I did all right. Test this code in MVS. No warnings and true code. 'test_array' and TESTCODE has various addresses. In Keil them addresses is equal. BUG #2: Ignoring {} in initializations. Follow constructions:
code struct { int i; struct { char a; char b; } u; } test_array[2][10] = { { {0, {1}}, {2, {3}}, } };
... { {0, 1, 2, 3}, } };