So far I cannot reproduce the problem.  Using VS2003, VA 1823, and a .h file with a matching .c file I have added the following code to the .h file:
#pragma once
typedef struct PureCStruct
{
	int c_height;
	int c_density;
	float c_width;
};
and the following code to the matching .c file:
#include "test_pure_c.h"
static void testPureCStruct()
{
	struct PureCStruct structTest;
	structTest.c_density;		// no underlining
	structTest.invalid_item;	// underlined as invalid
	structTest.|;
}
when I type the dot here I get a listbox showing me the members of the struct.  Can you try this code on your system please and see if you get the same results?