| Walt Mankowski on Sun, 8 Dec 2002 18:12:05 -0500 |
|
On Sun, Dec 08, 2002 at 04:59:59PM -0500, Jeff Abrahamson wrote:
> I wonder if someone can help me see what I'm missing.
>
> The following code snippet yields a warning and an error. I don't
> think it should. Am I confused, or is gcc?
You haven't done anything really *wrong*, it's just gcc being strict
because you told it to give all warnings.
> int foo(struct bar *b);
>
> typedef struct bar {
> int a;
> } Bar;
>
> foo(Bar *b)
> {
> return 0;
> }
A typedef isn't a #define. Even though here they're different names
for the same structure, gcc warns that they're different. To get rid
of the warning, either change the first line to
int foo(Bar *b);
or the declaration of the subroutine foo to
foo(struct bar *b)
{
return 0;
}
Oh, and that form of declaration is deprecated since you're not
explicitly saying that it returns an int. So you should really use
int foo(Bar *b)
{
return 0;
}
Walt
Attachment:
pgprVzE8JzyBj.pgp
|
|