MSVC++ linking question

Hi all

This is not an openGL question as such, more like a general coding question. But since there are so many smart people here, perhaps you can help me anyway . My problem is the following:

I am maiking a loader for the md3 format and have the following files:
main.h, main.cpp, md3.h and md3.cpp. Main.h includes md3.h. In md3.h I have declared a 3-dimensional array of floats like this: float n[256][256][0];
Now, when I execute the program it gives me a link error: MD3.obj : error LNK2005: “float (* n)[256][3]” (?n@@3PAY1BAA@2MA) already defined in main.obj

If I put the array in md3.cpp, there is no problem, but it is a bit of a hack, so… I’m supposing it has something to do with me including md3.h in main.h, but that seems to be a necescity, so what do I do? Should “global” variables be put in the cpp-files as a rule or what? I am not terribly good at, what should be included where, and any larger programs I write tend to cause such problems, so any insight you have, either general or on my specific problem would be greatly appreciated.

Regards Anders

You can put your global variable in a .cpp and an extern in the corresponding .h

example:

in md3.cpp:
int GLOBAL_INT;
in md3.h:
extern int GLOBAL_INT;

this way wherever you include md3.h you can access your global int