The problem I have is basically the same as \'greentype\' mentions at http://www.cplusplus.com/forum/beginner/12458/
I\'m sharing variables through namespaces and a
Any global object, like i
, must have exactly one definition somewhere in the program, but it can be declared multiple times.
Using extern
without an initializer makes a declaration just a declaration. This is appropriate for your header file, but you must still define i
somewhere. As well as making the header declaration extern
you also need to add a definition (i.e. a copy of the declaration without extern
) to one and only one of your source files.
Edit: Reading your question, you say that you want to pass a variable to a function. From a style and code structure point of view, this isn't usually a good reason for using a shared (global) variable. In the absence of any overriding reasons you should normally define a function which takes a parameter and pass a value (possibly from a local variable) from the calling site to that function via its parameter.