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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| #define DOGSBARK//#define DOGSWAG//#define DOGSGROWLusing 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.
1
2
3
| #if (DOGSWAG && DOGSDOTRICKS) || (DOGSDOEVERYTHING) d.WagAndFetch();#endif |

