You can also define them in {$DEFINE } directives. What changes is the scope. When you define a under conditional defines in the project options, the scope is global to the whole project. $DEFINE directives are valid only from the point they are declared to the end of the current module, or until an $UNDEF directive using the same is encountered. What to use depends on your needs, and what the IFDEF does.