A minor change requires recompilation of the entire file. Reusing part of the program, a class for example, in another program requires a risky copy and paste operation. Several programmers can't work on the program simultaneously. For these reasons most programs are divided into several source files, each containing logically related declarations. Each source file is compiled separately, producing a file of machine language instructions called an object file .
Object files have a .obj extension.
It's the job of a program called a linker to link a project's object files together into a single executable file with a .exe extension. The linker is responsible for associating all references to a name in one object file to the definition of the name, which might be in another object file. Sometimes the definition of a name isn't in any of the project's object files. This makes reusing and sharing easy. Header Files Multiple source file programs sound great, but there is a problem.