Pentru a putea întelege modul în care sunt compilate programele în C (indiferent de dimensiunea lor), vom trece în revista principalele etape care au loc pâna la obtinerea codului final executabil. Aceste etape sunt transparente pentru programator în majoritatea compilatoarelor sau mediilor integrate, nefiind necesara activarea lor separata. În unele situatii însa (de obicei, pentru programele structurate pe mai multe fisiere), anumite etape se pot desfasura independent.