On Thu, Feb 12, 2015 at 11:02:06AM -0800, Alex Wang wrote: > > + struct mac_learning_port *mlport; > > > Simple C question, why don't we need to forward declare the struct > 'mac_learning_port'?
Forward declarations are only necessary in one weird C corner case: when the first use of the struct tag is in a function parameter. So: void f(struct foo *); requires a forward declaration if this is the first use of struct foo. But: struct bar { struct foo *x; }; or struct foo *f(void); doesn't. It's a weird rule and I wonder whether the C committee thought it through properly back in the late 1980s. Out of curiosity I took a quick look through the C standard rationale for a mention of this topic, but I don't see one. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev