Answering my own question... On 09/06/2011, at 4:27 PM, Julian Leviston wrote:
> See below... > > On 09/06/2011, at 2:59 PM, Josh Gargus wrote: > >>>> I really don't understand what this means: >>>> >>>> typedef struct object *(*method_t)(struct object *receiver, ...); >>>> >>>> method_t is a pointer to a function that returns an object pointer and >>>> takes receiver and additional argument >>> >>> Thanks for this. Okay, I understand that, but why is there a "struct" in >>> there twice? considering object is defined as a struct earlier in the >>> piece... is it because they're object pointers? when specifying a struct >>> pointer, do you need to write "struct" even though you've previously >>> specified a struct with that name? >> >> The latter. In C++ you only need to use struct when declaring the type. >> However, in C you need to explicitly use struct every time you want to refer >> to the type. >> >> One common idiom is to use a typedef while defining the type. In this case, >> you might write: >> >> typedef struct object object_t; >> typedef object_t *(*method_t)(object_t *receiver, ...); >> > > Okay, so in the initial example, why the typedef? What function is it > performing here? I thought typedef was used to alias types, and yet here it > doesn't seem to be doing anything... if method_t is a function pointer, why > does there need to be a typedef in front of it? > > Sorry I'm so dense. :S > > Julian. So basically adding typedef defines the function pointer as a type, whereas leaving it off simply creates a variable function pointer. I *think* I've finally wrapped my head around this now. Gosh. Julian.
_______________________________________________ fonc mailing list [email protected] http://vpri.org/mailman/listinfo/fonc
