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()  
      {  
      }  
   }  
}