Preprocessor Directives

Preprocessor directives supply the compiler with additional information about regions of code. The most common preprocessor directives are the conditional directives, which provide a way to include or exclude regions of code from compilation. For example:

#define DEBUG
class MyClass {
  int x;
  void Foo( ) {
  # if DEBUG
    Console.WriteLine("Testing: x = {0}", x);
  # endif
  ...
}

In this class, the statement in Foo is compiled conditionally, dependent upon the presence of the user-selected DEBUG symbol. If you remove the DEBUG symbol, the statement isn’t compiled. Preprocessor symbols can be defined within a source file as just shown, and they can be passed to the compiler with the /define : symbol command-line option. All preprocessor symbols are implicitly true, so the previous #define statement is effectively identical to:

#define DEBUG = true

The #error and #warning symbols prevent accidental misuse of conditional directives by making the compiler generate a warning or error given an undesirable set of compilation symbols.

Preprocessor Directives

The C# language supports the preprocessor directives shown in Table 2.4.

Table 2-4. Preprocessor Directives

Preprocessor Directive

Action

#define symbol

Defines symbol

#undef symbol

Undefines symbol

#if symbol [operator symbol2] ...

symbol to test; operator: == , != ,&& ,|| followed by #else, #elif, #endif

#else

Executes code to subsequent #endif

#elif symbol [operator symbol2]

Combines #else branch and #if test

#endif

Ends conditional directives

#warning text

text: warning text to appear in compiler output

#error text

text: error manager to appear in compiler output

#line number [file]

number specifies line in source code;file is the filename to appear in computer output

#region name

Marks beginning of outline

#end region

Ends an outline region

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.15.186.79