Помощь - Поиск - Пользователи - Календарь
Полная версия: Макросы и переходы
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
dushik
Люди, скажите: существуют ли в борланд паскале макросы или переходи, если нет, то есть ли в дельфях? А если же есть, то как это всё осуществляется? Мне просто интересно ;)
trminator
Если ты имеешь ввиду макросы наподобие как в Си, то вроде нет... есть правда директивы компиляции {$DEFINE ...}; {$IFDEF...}; ..., но это вроде не то, что тебе нужно.

А про переходы я что-то не понял, что ты имеешь ввиду - goto?
dushik
Да-да, гоу ту. А спросил я это потому что, да, на Си это увидал и мне интересно стало, есть ли такие возможности на моем, пока самом понятном и любимом языке smile.gif
Пример макроса (2*2) на Си:
#include<stdio.h>
#define st(x) x*x
int main(){
    int i;
    int h;
    i=2;
    h=st(x);
    printf("n%d",h);
}

А вот пример перехода:
#include<stdio.h>
int main(){
    int i;
    printf("введите положительное числоn");
    scanf("n%d",i);
    if(i<0) goto phel
      else
    goto hor;
    hor:
    printf("молодец : )");
    goto endp;
    phel:
    printf("пшел нафиг, это не отрицательное число : (");
    endp:
}
ALex___
с помощью InLine-а можно макрос задать - только к машкодах
dushik
ALex___, а примерчик можно?
trminator
Про goto спроси у СКВОЗНЯКА smile.gif он его любит. А вообще он есть, правда, мое мнение, что нужно выпустить закон, запрещающий goto ;D

В Павкале есть {$DEFINE NAME}, но макросы так не определить - можно только потом использовать это в конструкциях типа {$IFDEF NAME}...{$ELSE}...{$ENDIF}. Это может пригодиться, например, для отладки - написАл в начале {$DEFINE DEBUG}, а дальше, если хочешь иметь в программе отладочные разные выводы на экран, или запись в лог, или еще чего-нибудь (но только на время отладки), пишешь их внутри условий {$IFDEF DEBUG}...{$ENDIF}. А чтобы потом их разом все убрать, просто стираешь в начале программы эту {$DEFINE DEBUG}, и все, что внутри этих ИФДЕФОВ, не компилируется.

н-да... объяснил, называется...
dushik
нда... ну ладно, все равно спасибо  :smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.