typedef struct _INNER_STRUCT 
{
	unsigned int inner_val1;
	unsigned int inner_val2;
}	INNER_STRUCT;

INNER_STRUCT is1;
INNER_STRUCT is2;

typedef struct _OUTER_STRUCT 
{
	INNER_STRUCT correctStruct;
	INNER_STRUCT incorrectStruct;
	unsigned int outer_val1;
}	OUTER_STRUCT;

typedef struct _OUTER_STRUCT_2 
{
	INNER_STRUCT *correctStruct;
	INNER_STRUCT *incorrectStruct;
	unsigned int outer_val1;
}	OUTER_STRUCT_2;

static OUTER_STRUCT myStruct;
static OUTER_STRUCT_2 myStruct2 = 
{
	&is1,
	&is2,
	0x00
};

static void DoSomeStuffToInnerStruct(INNER_STRUCT *is);

void MainFunction(void)
{
	DoSomeStuffToInnerStruct(&myStruct.correctStruct);	
	DoSomeStuffToInnerStruct(&myStruct.incorrectStruct);	

	DoSomeStuffToInnerStruct(myStruct2.correctStruct);	
	DoSomeStuffToInnerStruct(myStruct2.incorrectStruct);	
}

void DoSomeStuffToInnerStruct(INNER_STRUCT *is)
{
	is->inner_val1 = 0x01;
	is->inner_val2 = 0x02;
}
