Definitions and instantiations within a compilation module can either be publicly accessible to other modules, or private and inaccessible. By default, all entities are public, i.e. their uses are exported. To make an entity private, simply prefix the first declaration or prototype with the keyword static, like in C. To refer to an entity defined in another module, simply prefix a declaration with the keyword extern, like in C.
Implementation: Generate automatic headers from implementation files.