SkillByAIOpen interactive version →

Lesson 34 / 38

Headers, Multi-File Programs & Compilation

Split programs across files with headers and include guards, and see how compiling and linking fit together.

#include pastes a file in

#include <stdio.h> (angle brackets — system headers) or #include "myheader.h" (quotes — your own files) literally pastes that file's text at that point before compiling.

Header guards prevent double inclusion

If two files both #include the same header, the guard ensures its contents are processed only once, avoiding "redefined" errors.

#ifndef MATH_UTILS_H
#define MATH_UTILS_H

int add(int a, int b);
int sub(int a, int b);

#endif // MATH_UTILS_H

Compile -> object files -> link

Each .c file compiles separately into an .o (object) file; the linker then stitches all the .o files and library code together into one executable.

Compiling multiple files

gcc handles compiling and linking together in one command when given all sources.

gcc main.c math_utils.c -o app
./app