2014-12-02 2 views
-1

Я уверен, что ответ НЕТ, но я просто хочу, чтобы убедиться, что это невозможно дезактивировать кода между условными символами компиляции в выполнении, экс;можно ли дезактивировать условные символы компиляции во время выполнения?

/* code that make this been skip*/ 

#if DEBUG 
    /* some code here */ 
#endif 

не делая что-то подобное;

public class test 
{ 
    public static bool ActivateDebug = true; 

    public void SomeMethod() 
    { 
     /*some code*/ 

     #if DEBUG 
     if (test.ActivateDebug) 
     { 
      /*some code */ 
     } 
     #endif 

     /*some code */ 
    } 
} 
+1

Операция 'if' используется для выполнения,' # IF' - для времени компиляции. И нет оснований для существования чего-то еще. –

+0

Нет, _compilation_ является рабочим словом в условных символах компиляции. –

ответ

2

Нет, условные символы компиляции контролируются во время предварительной обработки компиляции. Это означает, что код между #if и #endif фактически удален (или добавляет, является ли флаг истинным или ложным) компилятором.

Поскольку код не существует в скомпилированном приложении, нет способа «волшебным образом» вернуть его.

Смежные вопросы