kaykun kaykun - 1 month ago 14
C++ Question

Global Variable within Multiple Files

I have two source files that need to access a common variable. What is the best way to do this? e.g.:

source1.cpp:

int global;

int function();

int main()
{
global=42;
function();
return 0;
}


source2.cpp:

int function()
{
if(global==42)
return 42;
return 0;
}


Should the declaration of the variable global be static, extern, or should it be in a header file included by both files, etc?

Answer

The global variable should be declared extern in a header file included by both source files, and then defined in only one of those source files:

common.h

extern int global;

source1.cpp

#include "common.h"

int global;

int function(); 

int main()
{
    global=42;
    function();
    return 0;
}

source2.cpp

#include "common.h"

int function()
{
    if(global==42)
        return 42;
    return 0;
}
Comments