вторник, 3 июля 2007 г.

Система: макросы 1

[id:002]

Создайте новый job с именем «BLG_Job1» и наберите следующий код в теле джоба: Код, который нужно ввести Что заметит программист C++/C#?

  1. Объявление целочисленной переменной "i" не отличается от конструкции в Си
  2. Оператор "switch" абсолютно идентичен конструкциям в C++/C#
  3. Использование "break" по окончании ветки ветвления "case" обязательно, иначе будут выполнены команды следующей ветки
  4. Есть ветвление по-умолчанию — по ветке"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 комментария:

Анонимный комментирует...

Почему регистрация не работает ?

Анонимный комментирует...

Геннадий, добрый день! Спасибо за хорошое примеры в Акс. Но, где и когда это использовать, приведите примеры, пжлст! В каких случаях без макросов нельзя обойтись?