What is a concept behind using extern in c/c++?

c, c++, extern

Solution

`extern` is used to refer to a variable in another translation unit ("source file"). For instance, your code in main.c looks like this:

extern int var;
int main(void)
{
    var = 10;
    return 0;
}

This code contains a declaration for an integer named var, but no definition, because extern explicitly says: "the definition for this is somewhere else"

You could define another source file, say, other.c:

int var = 0;

Then, after you add this new translation unit to your build command, your program will link fine, and the code in both files can operate on the shared `var` variable.

In the second version, you just override the declaration of the extern `var` with a local variable in your main function. Since the extern `var` is not (ODR-)used anymore, the linker does not require it, so your executable can build successfully.

Problem

Sorry for this type of question. But, I am very curious about the keyword `extern` in `C\C++`. while searching for explanation for `extern` I got to know that `extern` tell the compiler that the variable or function is already defined in some other file or program. But if this is a case then why we use `extern`? as I tried some codes as follows: ``` extern int var; int main(void) { var = 10; return 0; } ``` This code is giving me an error message as `unresolved external symbol "int var" (?var@@3HA)`. and if I am using some code like: ``` extern int var; int main(void) { int var = 10; return 0; } ``` It is not showing any error and gives value same as I have defined in main function. So, Can any one help me about the behavior of `extern`? I am little confused on this. Please forgive me if it is not a valid question. Thank you in Advance.

Original source