[gnu.gcc.bug] difficulties with dynamic arrays in gcc

self@BAYES.ARC.NASA.GOV (Matthew Self) (10/25/88)

  With gcc, there is a problem passing a dynamic array to a function
when the size of the array is also an argument to the function.  The
problem is that the size argument must appear BEFORE the array in the
prototype argument list.  For exmaple, the function

	void test(float a[][n], int n) {}

will not compile, but the function

	void test(int n, float a[][n]) {}

will.  The workaround is obvious, but it is cumbersome to force
programmers to re-order the arguments of their functions.  Since the
prototype is purely a declaration, it would seem reasonable to permit
the necessary forward reference.

  Using conventional function declarations, the function

	void test(a, n)
	float a[][n];
	int n;
	{}

will not compile, but the function

	void test(a, n)
	int n;
	float a[][n];
	{}

will.  In this case the arguments can be left in the same order---only
the type declarations need be rearranged.

			Matthew Self
		  NASA Ames Research Center
		   self@bayes.arc.nasa.gov