Compiler Error CS1032

Cannot define/undefine preprocessor symbols after first token in file

The #define and #undef preprocessor directives must be used at the beginning of a program, before any other keywords, such as those used in the namespace declaration.

The following sample generates CS1032:

// CS1032.cs
namespace x
{
   public class clx
   {
      #define a   // CS1032, put before namespace
      public static void Main()
      {
      }
   }
}