The declaration (the bit with the extern) must be visible to any source (.c) file which uses the variable, so the common practise is to put it in a header (.h) file, and #include that header wherever the variable is required. The definition acts just like a function prototype.
The definition can only exist in one place, as it allocates the space for the variable, so must be in a source (.c) file. In that respect, it behaves like a function body.
Again, I strongly recommend that you find a good C reference, and read up on this subject.
Steve.