Система: макросы 1
[id:002]
Создайте новый job с именем «BLG_Job1» и наберите следующий код в теле джоба:
Что заметит программист C++/C#?
- Объявление целочисленной переменной "i" не отличается от конструкции в Си
- Оператор "switch" абсолютно идентичен конструкциям в C++/C#
- Использование "break" по окончании ветки ветвления "case" обязательно, иначе будут выполнены команды следующей ветки
- Есть ветвление по-умолчанию — по ветке"default".
Теперь про макроконстанты. Здесь объявляется локальная макрокоманда. Локальная — потому что внутри функции. Используется конструкция #DEFINE, после которой, через точку, идет имя макроконстанты "MACRO_CONST". А в конце строки точку с запятой не ставим, хотя рука моя постоянно норовит это сделать.
Чтобы обратиться к макроконстанте ставим решетку и имя.
Как ты думаешь что выдаст программа?
Выдаст она цифру 1. Потому что макросы обрабатываются еще на этапе компиляции, а не во время исполнения кода, макрокоманды просматриваются последовательно сверху-вниз и во время исполнения джоба он будет выглядеть так:
static void BLG_Job1(Args _args)
{
int i = 3;
switch(i)
{
case 1:
break;
case 3:
break;
default:
}
print 1;
pause;
}
, вне зависимости от того по какой ветке в switch мы пройдем.
Итог
Макроконстанты объявляются с помощью директивы #DEFINE
2 комментария:
Почему регистрация не работает ?
Геннадий, добрый день! Спасибо за хорошое примеры в Акс. Но, где и когда это использовать, приведите примеры, пжлст! В каких случаях без макросов нельзя обойтись?
Отправить комментарий