student@ubuntu:~$
c 3/5 30 XP

Headers and Makefiles

0%

Quick Reference

Header file template:

#ifndef MYLIB_H
#define MYLIB_H

// Function prototypes
int compute(int x, int y);
void display(const char *msg);

#endif

Makefile template:

CC = gcc
CFLAGS = -Wall -Wextra -std=c11

prog: main.o utils.o
	$(CC) $(CFLAGS) -o prog main.o utils.o

main.o: main.c utils.h
	$(CC) $(CFLAGS) -c main.c

utils.o: utils.c utils.h
	$(CC) $(CFLAGS) -c utils.c

.PHONY: clean
clean:
	rm -f *.o prog

Common Pitfalls

  • Spaces instead of tabs – Makefile recipes require tab indentation. Spaces cause cryptic errors.
  • Missing include guards – Without guards, including a header twice causes redefinition errors.
  • Definitions in headers – Put only declarations in .h files. Definitions in headers cause multiple definition errors when linked.
  • Circular includes – A.h includes B.h which includes A.h. Include guards prevent infinite recursion but can cause missing declarations.

Unlocks

Complete this skill to see what it unlocks.