OT: C syntax question
Brad Mettee
bmettee at pchotshots.com
Tue Jun 30 01:18:19 UTC 2009
At 08:41 PM 6/29/2009, Robert Huff wrote:
> Let us suppose I have a structure:
>
>struct CONTINENT {
> ...
>}
>
> I use this to create an array of pointers to said struct:
>
>struct CONTINENT *Asia[10][10];
>
> Now I pass this array to a function:
>
> plate_shift(Asia, (int) foo, (float) bar);
>
> In the definition of the function, I say:
>
>int plate_shift(Cont,f,b)
> struct CONTINENT *Cont[10][10];
> int f;
> float b;
>{
> ...
>}
>
> and the compiler does not complain. If, however, I try to
>prototype the function as:
>
> extern int plate_shift(struct CONTINENT *[][],int,float);
>
> with:
>
>CFLAGS = -Wall -std=c99
>
> I get:
>
>error: array type has incomplete element type
>
> Changing to:
>
> extern int plate_shift(struct CONTINENT *foo[][],int,float);
>
> returns the same error.
> K&R 2ed is not helpful, nor is a quick poke around the web.
> What am I forgetting?
>
> Respectfully,
>
>
> Robert Huff
I believe since you are declaring the array as having a fixed number of
elements, you must declare the function to take it the same way, like this:
extern int plate_shift(struct CONTINENT *[10][10],int,float);
Without the 10,10 size definition, the plate_shift function would have no
idea how big the array of pointers actually is.
Brad Mettee
PC HotShots, Inc.
Baltimore, MD
(410) 426-7617
-> Let us bring out the *Power* of your PCs. <-
-> Custom Business Software Solutions since 1991 <-
visit http://www.pchotshots.com for information about our company.
More information about the freebsd-questions
mailing list