The #define directive performs a text substitution in the source file. This directive has two main uses: simple text replacement and creation of function-like macros. It is also used with the #undef directive to control conditional compilation, as we'll discuss later.