Compiler errors

Can anyone help me compile the following code? I keep getting errors concerning the typedef definitions.
They reference one another in such a way that it keeps throwing errors. Can anyone correct this? I have
been using MS Visual Studio .NET to compile the code.

void
main (int argc, char *argv[])
{
// Since the contents of IExample_Vtbl will never change, we'll
// just declare it static and initialize it that way. It can
// be reused for lots of instances of IExample.
static IExampleVtbl IExample_Vtbl = {SetString, GetString};

void
main (int argc, char *argv[])
{
// Since the contents of IExample_Vtbl will never change, we'll
// just declare it static and initialize it that way. It can
// be reused for lots of instances of IExample.
static IExampleVtbl IExample_Vtbl = {SetString, GetString};

I've noticed that you're using this as a parameter. While it is legal in C, it isn't in C++. Might be better to rename it to that so that if in the future this program gets compiled as C++, you won't get any problems.