6.9.2 External Object definitions
Semantic
1. If the declaration of an object's identifier has a file scope and an initializer, then the declaration is an external definition of the identifier.
2. A declaration that has a file scope and does not have an initializer, does not have a storage-class specifier, or has an identifier for the object that stores the class descriptor static , constitutes an experimental definition . If a translation unit contains one or more experimental definitions for an identifier, and the translation unit does not contain an external definition of this identifier, then the behavior is exactly like the translation unit contains a file scope declaration of this identifier, with a composite type to the end of this translation unit, and has an initializer equal to 0.
3. If the declaration of an identifier for an object is an experimental definition and has an internal connection, the declared type should not be an incomplete type.
4, Example 1
ISO/IEC 9,899:2011 clause 6.9.2--external object definition