When you compile a program the compiler first uses a preprocessor to analyze the code. The #define directive can be used to either define a constant number or function or to replace an instruction in your code.
For instance:
#define for_ever_do while(1)
This means you can use for_ever_do instead of while(1) and the effect will be the same because the preprocessor first replaces for_ever_do with while(1) and then the program is compiled. With #define you can also create function or more precisely called, a macro.
Here's another example:
#define sqr(x) (x*x)
When you call sqr(6), the preprocessor will first replace sqr(6) with (6*6) and then compile the program.
Another thing that you can do with #define is concatanate two variables. For example:
#define conc(a,b)int main() {int xyz=123,try=125;cout<
This will display 123 125 because the preprocessor replaces conc(xy,z) with xyz and then evaluates it.