What is external linkage and internal linkage?

c++, c++-faq

Solution

When you write an implementation file (`.cpp`, `.cxx`, etc) your compiler generates a translation unit. This is the source file from your implementation plus all the headers you `#include`d in it.

Internal linkage refers to everything only in scope of a translation unit.

External linkage refers to things that exist beyond a particular translation unit. In other words, accessible through the whole program, which is the combination of all translation units (or object files).

Problem

I want to understand the external linkage and internal linkage and their difference. I also want to know the meaning of `const` variables internally link by default unless otherwise declared as `extern`.

Original source

Related problems