Синтаксис C # #if / #ifdef не компилируется, почему? - PullRequest
0 голосов
/ 25 августа 2010

Почему приведенный ниже код не компилируется (фрагмент)?

  public enum ApplicationType : int
  {
   CONSOLE = 1,
   WINDOWS_FORMS = 2,
   ASP_NET = 3,
   WINDOWS_SERVICE = 4,
   MUTE = 5
  }

        //#if( false)
        //#if (DEBUG && !VC_V7)
 #if( m_iApplicationType != ApplicationType.ASP_NET  )
        public class HttpContext
  {
   public class Current
   {
    public class Response
    {
     public static void Write(ref string str)
     {
      Console.WriteLine(str);
     }
    }
   }
  }
#endif

Ответы [ 2 ]

5 голосов
/ 25 августа 2010

Какую ошибку вы получаете?

В любом случае ( m_iApplicationType == ApplicationType.ASP_NET ) не является постоянной времени компиляции.

4 голосов
/ 25 августа 2010

Использование #if с переменной-членом недопустимо. Он работает только с символами, которые вы создаете с помощью директивы #define, например:

#define ASP_NET

#if(ASP_NET)
// put your conditional compilation code here
#endif

#if(CONSOLE)
// your console-related code goes here
#endif

В этом случае будет компилироваться только код в блоке #if(ASP_NET), поскольку CONSOLE не определено.

...