В сегодняшнем уроке рассмотрим такой интересный момент, как процесс компиляции макро переменных в зависимости от количества амперсандов стоящих перед этой переменной.
Для лучшего понимания компиляции советую подключить опцию: options symbolgen;
И так давайте рассмотрим пример:
Создадим две макро переменных, причем значение первой макро переменной является названием второй.
В данном примере все понятно. Теперь добавим еще один амперсанд:
Вот теперь становиться интересней. В данном случае мы видим, что двойной амперсанд превратился в одинарный и результат получился как в первом случае.
Добавим еще один амперсанд:
Теперь мы видим, что на первом шаге два амперсанда были превращены в один, а следующий (т.к. он остался один) был расценен как макро переменная и вернул значение firstmacro. На следующем шаге наш амперсанд (который получился из двух первых) был применен уже к firstmacro и мы получили в результате значение second_.
Рассмотрим четыре амперсанда:
Здесь все просто. Две пары схлопнулись в два аперсанды и они уже затем опять схлопнулись в один.