See the following documentation for more detailed discussion of conditionals.
The
condition in an if
statement is tested during the execution of your program. Its purpose is
to allow your program to behave differently from run to run, depending
on the data it is operating on. The condition in a preprocessing conditional
directive is tested when your program is compiled. Its purpose is to allow
different code to be included in the program depending on the situation
at the time of compilation.