Your program is growing up: more files, cleaner boundaries, fewer copy-paste disasters.
- Write a header that survives being included twice
- Hide an implementation behind an incomplete type
- Write a macro whose parentheses preserve the caller's expression