On Wed, 30 May 2007, Eric Dumazet wrote: > Andrew Morton a �crit : > > On Mon, 28 May 2007 21:16:31 +0200 > > Geert Uytterhoeven <[EMAIL PROTECTED]> wrote: > > > > > --- a/include/asm-m68k/module.h > > > +++ b/include/asm-m68k/module.h > > > @@ -1,7 +1,38 @@ > > > #ifndef _ASM_M68K_MODULE_H > > > #define _ASM_M68K_MODULE_H > > > -struct mod_arch_specific { }; > > > + > > > +struct mod_arch_specific { > > > + struct m68k_fixup_info *fixup_start, *fixup_end; > > > +}; > > > > Here we use struct m68k_fixup_info. > > > > > +#define MODULE_ARCH_INIT { \ > > > + .fixup_start = __start_fixup, \ > > > + .fixup_end = __stop_fixup, \ > > > +} > > > + > > > #define Elf_Shdr Elf32_Shdr > > > #define Elf_Sym Elf32_Sym > > > #define Elf_Ehdr Elf32_Ehdr > > > + > > > + > > > +enum m68k_fixup_type { > > > + m68k_fixup_memoffset, > > > +}; > > > + > > > +struct m68k_fixup_info { > > > + enum m68k_fixup_type type; > > > + void *addr; > > > +}; > > > > and later we define it. > > > > How come it doesn't spit warnings? > > > > I think it could be tightened up even if it happens not to warn? > > > struct a { > struct not_yet_defined *start, *end; > }; > > struct not_yet_defined { > void *foo; > }; > > Is a valid and gives no warnings.
I was puzzled by this as well, as there were no compiler warnings... Apparently you get a warning only if the _first_ occurrence of a struct is declared inside a parameter list of a function. So even struct a { struct not_yet_defined *start, *end; }; extern void f(struct not_yet_defined *start); struct not_yet_defined { void *foo; }; doesn't give a warning, because the first occurence is inside the definition of struct a. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [EMAIL PROTECTED] In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds