#506 – Using Expressions in #if and #elif Directives
January 26, 2012 Leave a Comment
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