(#if 0 или #if 1) А зачем оно надо?

В действительности, когда видишь в первый раз такой код:

#IF 0
...
#ENDIF

или такой:

#IF 1
...
#ENDIF

задаешься вопросом: "А зачем оно надо?". Если заглянуть в техническую часть этих макросов (а ведь это именно макросы), то первый код не выполняется никогда, второй выполняется всегда. Если с первым более менее ясно (можно использовать как комментарии), то второй вообще ни в какие рамки. Да и зачем использовать такой странный способ, если у каждого языка есть свои встроенные способы комментирования? 

Давайте представим себе большую программу состоящую из нескольких модулей, в каждом куча процедур и функций. Далее представим, что определенная часть процедур зависит от одной конкретной процедуры, в которой вы никак не можете определиться с кодом. То есть смысл ее работы утвержден, но реализация алгоритма не утверждена. Или проще, у вас есть два способа сделать эту процедуру , но пока вы не знаете какой лучше. Конечно для того чтобы понять , надо их оттестировать.

Как же проще и быстрее переключать эти способы? Вот как раз тут и выручат данные макросы. Взгляните на код:

Sub PROC()
    #IF 0
        Rem Здесь код 1
    #ELSE
        Rem Здесь код 2
    #ENDIF
End Sub

В данном случае будет выполняться второй код. Но если вам нужно провести тесты над первым кодом, достаточно просто заменить 0 на 1. Попробуйте проделать эти операции с помощью комментариев. Как минимум надо иметь редактор , который умеет делать комментарии блоком, и даже так надо один разкомметировать , второй закомметировать. При большом объеме кода это тоже длительная операция. Метод копирования\вставки тоже заставит переключаться между редакторами или отдельными вкладками. При том в любом случае надо искать\выделять начало и конец процедуры\кода. Можно еще написать две процедуры и менять имена, но это вообще не АЙС. И это я расписал распутье только с одной процедурой, а представьте что их множество... Может конечно есть и другие способы, но я пока быстрее макросов ничего не вижу.

При использовании макросов, компилятор возьмет ту часть , которую вы ему укажете. То есть когда вы полностью отладите свою программу, можно даже не стирать неработающую часть программы, на конечный исполняемый файл это не повлияет.

Всего доброго!