On Sat, Jul 07, 2007 at 11:32:50PM -0400, Pavel Roskin wrote: > It looks like the definition of struct st is sort of "weak" when it's > read from the header included on the command line, so that the forward > declaration from test.c removes the original definition. > > It's also possible to define struct st to something else, and sparse > won't warn about it. But omitting "struct st;" fixes the error, so the > original definition is known to sparse. Looks like it gets a scope boundary between those. There is one case when presense of struct st; changes things: struct st; in struct st {....}; .... { struct st; struct st *p; ... struct st {....} x; ... } will make p a pointer to struct st from that scope. If you omit it, p will be a pointer to struct st from the outer scope and x will have a different type. Too late beginning of file scope, perhaps? - To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html