this is mostly taken from the official lecture summary provided on the lecture gitlab page with some additions taken from the lecture slides
Programs split into several files/libraries, compiled separately and linked:

.o files to runnable file#define NAME *VALUE* defines variable in code, instances are replaced
#define f(x) std::sin(x) advanced define with parameters
#undef NAME undefine/delete variable
#ifdef NAME checks if variable is defined
#endif close an if-statement
#if #elif #else if/else statements
#error message throw error, printed on console if this point is reached
#include "file.h" #include <system file> pastes file into line, “” looks in current directory first, then where <> looks (can also be relative), <> looks in list of directories known to compiler