$$ \newcommand{\R}{\mathbb{R}}
\newcommand{\N}{\mathbb{N}}
\newcommand{\Z}{\mathbb{Z}}
\newcommand{\C}{\mathbb{C}}
\newcommand{\dx}{\text{ dx}}
\newcommand{\rang}{\text{rang}}
\newcommand{\s}{\ \ \ \ \ \ }
\newcommand{\arrows}{\s \Leftrightarrow \s}
\newcommand{\Arrows}{\s \Longleftrightarrow \s}
\newcommand{\arrow}{\s \Rightarrow \s}
\newcommand{\c}{\bcancel}
\newcommand{\v}[2]{
\begin{pmatrix}
#1 \\
#2 \\
\end{pmatrix}
}
\newcommand{\vt}[3]{
\begin{pmatrix}
#1 \\
#2 \\
#3 \\
\end{pmatrix}
}
\newcommand{\stack}[2]{
\substack{
#1 \\
#2
}
}
\newcommand{\atom}[3]{
\substack{
#1 \\
#2
}
\ce{#3}
}
$$
The C++ Processor
The first part of a c++-file. All commands that interact with the processor are preceded by a ‘#’.
Directives
Guards
Control flow in the preprocessor. These are mostly used in header files.
Tip
If you run into errors like: “you have declared this twice”, you probably need to guard its declaration.
#ifndef MY_VARIABLE
#define MY_VARIABLE
#include <import-one>
#include <import-two>
#include <import-three>
#include <import-four>
decrarations...
#endif