Вложенность директив условной трансляции
Как мы неоднократно видели в приведенных выше примерах, TASM допускает вложенность условных директив компиляции. Более того, так как вложенность требуется довольно часто, TASM предоставляет набор дополнительных директив формата ELSEIFxxx, которые заменяют последовательность подряд идущих ELSE и IFxxx
в структуре:
IFxxx ; ELSE IFxxx ;... ENDIF ENDIF |
Эту последовательность условных директив можно заменить эквивалентной последовательностью дополнительных директив:
IFxxx ;... ELSEIFxxx ;... ENDIF |
Наличие xxx в ELSExxx говорит о том, что каждая из директив IF, IFB, IFIDN и т. д. имеет аналогичную директиву ELSEIF, ELSEIFB, ELSEIFIDN и т. д.
В конечном итоге это улучшает читаемость кода. В последнем примере фрагмента макроса, проверяющем, имя какого регистра было передано в макрос, наблюдается подобная ситуация. Последовательность ELSE и IFDIFI можно записать так, как в строке 4:
show macro rg ifdifi ,
goto M_al elseifdifi , goto M_ah else exitm endif :M_al ... :M_ah ... endm |