Conditionally includes source code at compile-time.
#IF nExpression1 | lExpression1 Commands [#ELIF nExpression2 | #ELIF lExpression2 Commands... #ELIF nExpressionN | #ELIF lExpressionN Commands] [#ELSE Commands] #ENDIF |
Параметры
- #IF nExpression1| lExpression1Commands
-
Аргумент nExpression1 задает числовое выражение, которое должно вычисляться.
-
Если значение этого выражения отлично от нуля, команды, следующие непосредственно за директивой #IF, будут включены в компилируемый код. Осуществляется выход из структуры #IF ... #ENDIF, и компиляция продолжается с первой программной строки, следующей за директивой #ENDIF.
-
Если значение выражения равно 0, команды, следующие непосредственно за #IF, не включаются в компилируемый код. Вычисляются выражения следующих директив #ELIF.
Аргумент lExpression1 задает логическое выражение, которое должно вычисляться.
-
Если значение этого выражения есть "истина" (.T.), команды, следующие непосредственно за директивой #IF, будут включены в компилируемый код. Осуществляется выход из структуры #IF ... #ENDIF, и компиляция продолжается с первой программной строки, следующей за директивой #ENDIF.
-
Если значение выражения ѕ "ложь" (.F.), команды, следующие непосредственно за #IF, не включаются в компилируемый код. Вычисляются выражения следующих директив #ELIF.
Note
Не задавайте системные переменные памяти в качестве nExpression1 или lExpression1. Значения системных переменных памяти вычисляются только на этапе выполнения.
-
- #ELIF nExpression2| #ELIF lExpression2Commands
-
...
- #ELIF nExpressionN| #ELIF lExpressionNCommands
-
Если значение выражения nExpression1 авно 0 или значение lExpression1 - "ложь" (.F.), вычисляются директивы #ELIF. Сначала вычисляется первое выражение #ELIF nExpression2 или lExpression2. Если значение nExpression2 отлично от нуля или значение lExpression2 есть "истина" (.T.), команды, следующие за #ELIF, будут включены в компилируемый код. Осуществляется выход из структуры #IF ... #ENDIF, и компиляция продолжается с первой программной строки, следующей за директивой #ENDIF.
Если nExpression2 равно 0 или lExpression2 ѕ "ложь" (.F.), команды, следующие за #ELIF, не включаются в компилируемый код. Вычисляется следующая директива #ELIF.
- #ELSE Commands
-
Если директив #ELIF нет или они есть, но все дали значения 0 или "ложь" (.F.), то наличие директивы #ELSE определяет, будут ли включены в компилируемый код другие команды:
-
Если директива #ELSE указана, следующие за ней команды включаются в компилируемый код.
-
Если директива #ELSE не указана, ни одна из команд, находящихся между #IF и #ENDIF, не включается в компилируемый код. Осуществляется выход из структуры #IF ... #ENDIF, и компиляция продолжается с первой программной строки, следующей за директивой #ENDIF.
-
- #ENDIF
-
Указывает конец оператора #IF.
Примечания
Благодаря применению структуры #IF ... #ENDIF повышается читаемость исходного кода, сокращается размер откомпилированной программы, а в некоторых случаях повышается производительность.
При компиляции структуры #IF ... #ENDIF производится вычисление содержащихся в ней последовательных логических или числовых выражений; результаты вычислений определяют, какую группу команд Visual FoxPro следует или не следует включать в компилируемый код.
Пример
В следующем примере структура #IF ... #ENDIF определяет, какая версия Visual FoxPro выполняет компиляцию, а затем выдает соответствующее сообщение.
![]() | |
---|---|
#If SYS(3004) = "1033" ? "Locale ID is English" #Elif SYS(3004) = "1034" ? "Locale ID is Spanish" #Elif SYS(3004) = "1031" ? "Locale ID is German" #Elif SYS(3004) = "1036" ? "Locale ID is French" #Endif |
Смотрите Также
Справочное руководство
Команда COMPILEДиректива препроцессора #DEFINE ... #UNDEF
Директива препроцессора #IFDEF | #IFNDEF ... #ENDIF