The static keyword is used in C to restrict the visibility of a function or variable to its translation unit.
Also, C++ implicitly treats any const namespace-scope variable as having internal linkage unless it is explicitly declared extern, unlike C. A name's linkage is related to, but distinct from, its scope.
A name that has no linkage at all cannot be referred to from declarations in different scopes, not even from within the same translation unit.
The details differ between C (where only objects and functions - but not types - have linkage) and C++ and between this simplified overview.
C uses the term "identifier" where this article uses "name" (the latter of which is what C++ uses to formalize linkage): An identifier declared in different scopes or in the same scope more than once can be made to refer to the same object or function by a process called linkage.