Jeff Abrahamson on Sun, 8 Dec 2002 17:01:05 -0500 |
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? int foo(struct bar *b); typedef struct bar { int a; } Bar; foo(Bar *b) { return 0; } jeff@diderot:scratch $ gcc -Wall -c struct2.c struct2.c:1: warning: `struct bar' declared inside parameter list struct2.c:1: warning: its scope is only this definition or declaration, which is probably not what you want. struct2.c:8: warning: return-type defaults to `int' struct2.c:8: conflicting types for `foo' struct2.c:1: previous declaration of `foo' jeff@diderot:scratch $ At line 1, the size of the structure is not needed, so the declaration should be ok by my reading of K&R. Then at line 8, Bar is a synonym for struct bar, so it should be ok, again as per my understanding of K&R (by which I mean the ANSI C version, of course). jeff@diderot:scratch $ gcc -v Reading specs from /usr/lib/gcc-lib/i386-linux/2.95.4/specs gcc version 2.95.4 20011002 (Debian prerelease) jeff@diderot:scratch $ -- Jeff Jeff Abrahamson <http://www.purple.com/jeff/> GPG fingerprint: 1A1A BA95 D082 A558 A276 63C6 16BF 8C4C 0D1D AE4B Attachment:
pgpsFfyTcxbK5.pgp
|
|