#506 – Using Expressions in #if and #elif Directives

You can use more complex expressions in #if and #elif directives, instead of just checking to see whether a single conditional compilation symbol is defined.

In the example below, the #elif directive triggers if the DOGSBARK symbol is defined and then DOGSGROWL symbol is not defined.

#define DOGSBARK
//#define DOGSWAG
//#define DOGSGROWL

using System;
using DogLibrary;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            Dog d = new Dog("Kirby", 12);

#if DOGSWAG
            d.WagTail();
#elif DOGSBARK && !DOGSGROWL
            d.Bark();
#else
            d.BarkAndGrowl();
#endif

        }
    }
}

You can build more complex expressions using parentheses and the && (logical AND) and || (logical OR) operators.

#if (DOGSWAG && DOGSDOTRICKS) || (DOGSDOEVERYTHING)
            d.WagAndFetch();
#endif
Advertisement

About Sean
Software developer in the Twin Cities area, passionate about software development and sailing.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: