Initializers for multi-dimensional arrays
Doug Schmidt
schmidt at ics.uci.edu
Wed Jun 7 17:16:41 AEST 1989
Hi,
I've got a quick C question. The following program gives different
results depending on whether it is compiled with GCC 1.35 or Sun OS
4.0.1's cc compiler (if -DFIXBUG is defined when compiling they
produce the same result). The only difference is the absence of
surrounding '{' '}' to demarcate each row in the initializer for the
two dimensional array `bar.'
Can someone please tell me which version is *correct* w.r.t.
1. The latest ANSI-C draft.
2. Traditional behavior on UNIX compilers.
thanks very much,
Doug
----------------------------------------
typedef struct
{
int i;
int j;
} bar;
#ifndef FIXBUG
static bar foo[4][4] =
{
{1,0}, {2,0}, {3,0}, {4,0}, {5,0}, {6,0}, {7,0}, {8,0},
{9,0}, {10,0}, {11,0}, {12,0}, {13,0}, {14,0}, {15,0}, {16,0},
};
#else
static bar foo[4][4] =
{
/* Note the extra { } for each row... */
{ {1,0}, {2,0}, {3,0}, {4,0},},
{ {5,0}, {6,0}, {7,0}, {8,0},},
{ {9,0}, {10,0}, {11,0}, {12,0},},
{{13,0}, {14,0}, {15,0}, {16,0},},
};
#endif
main ()
{
int i,j;
for (i = 0;i < 4; i++)
{
for (j = 0; j < 4; j++)
printf ("%4d", foo[i][j].i);
printf ("\n");
}
}
--
Any man's death diminishes me, | schmidt at ics.uci.edu (ARPA)
Because I am involved in Mankind; | office: (714) 856-4043
And therefore never send to know for whom the bell tolls;
It tolls for thee -- John Donne
More information about the Comp.lang.c
mailing list