No, the structure of the header file is designed to allow it to compile only once. This is a very common C idiom you really should be familiar with.
Substitute a name that makes sense for _SOME_SYMBOL_ For instance, some variation of the header file name is often used. You want to make it reasonably certain of being unique to the particular file. As an example, for a file named instrument_util.h I would generally use a symbol such as _INSTR_UTIL_ or something similar. Sprinkling underscore characters through the name helps in trying to ensure uniqueness, this technique is often used by the compiler itself to "decorate" symbol names in the symbol tables in object files (but that is getting way outside the scope of this discussion).
Now what these preprocessor directives do is simple.
The first one checks that the symbol is not defined. If it isn't, the block of code between the #ifndef and the #endif directives are processed and compiled. The second directive defines the symbol so that next time the pre-processor and compiler see this file, they skip over the code and don't try to process it again.
The reason for doing this is that any global variables, typedefs, structure definitions and union definitions that are in the file should only be executed once or you will get an error in compilation.
So if you wanted to declare your global variable in the header file, its definition would go between the #define and #endif directives.
I hope that helps.
Martin Fredrickson
Test Engineer
Northrop Grumman
Advanced Systems and Products
San Diego, CA 92128