The text of the program is kept in units called
source files in this document.
A source file together with all the headers ([headers])
and source files included ([cpp.include]) via the preprocessing
directive #include, less any source lines skipped by any of the
conditional inclusion ([cpp.cond]) preprocessing directives, is
called a preprocessing translation unit.
Previously translated translation units and instantiation
units can be preserved individually or in libraries.
The separate
translation units of a program communicate ([basic.link]) by (for
example)
calls to functions whose identifiers have external or module linkage,
manipulation of objects whose identifiers have external or module linkage, or
manipulation of data files.
Translation units can be separately
translated and then later linked to produce an executable
program ([basic.link]).