Pre processor directives isn't used to define variables, the #define is just a way to facilitate the use of codes that you will use several times or that in the future you can modify without changing any line you put the code.
The #define just replace one value to other, for example:
#define PI 3.14159265
....
float diameter = (circ / PI);
The big difference between use #define and constant or variable, is that the use of #define don't allocates memory for this value, during the compilation the compilator just replace the PI to 3.14159265 in the code. define is used of this way because during the compilation is unchangeable (In the same manner as the constants) and doesn't allocate memory.
during the compilation the C++ compilator will generate a code with the defines replaced, so the above code during the compilation will be like this:
float diameter = (circ / 3.14159265);
if you want to allocate memory, just use constants:
const float PI = 3.14159265;
obs (#define is used too as macros)