Author Topic: Макросы  (Read 7996 times)

0 Members and 1 Guest are viewing this topic.

Сергей

  • Активный участник
  • ***
  • Posts: 159
    • View Profile
Макросы
« on: November 13, 2012, 06:11:26 PM »
Макросы позволяют пользователю расширять синтаксис языка. Хоть они и сложны в реализации, их полезность очевидна.
Пример макроса:

Code: (clickermann) [Select]
#define echo printТут макросом просто создается псевдоним для функции print.

Code: (clickermann) [Select]
#define slclick(\1,\2,\3) lclick(\1,\2)\
waitms(\3)\
lclick(\1,\2)\
waitms(\3)

slclick(1000,1000,30)
А это уже пример по-сложнее.

Слеши с цифрами - переменные макроса. Можно ставить любое значение, в до 10.
Слеши в конце строки - перевод строки без потери "фокуса" макроса. Т.е. без них перенос строки означает конец макроса.

При запуске скрипта, препроцессором все это переводится в вид:
Code: (clickermann) [Select]
lclick(1000,1000)
waitms(30)
lclick(1000,1000)
waitms(30)
И уже исполняется.

В наше время, когда макросы есть даже в ассемблере, хотелось бы видеть их и в кликермане.
Да и какая-никакая замена пользовательских фун-ий.
Конечно навряд ли явтор сделает эту фичу в ближайших версиях, но пусть тут все равно висит эта "хотелка"  ::)
Отсутствую.

Johnny

  • Создатель
  • Герой форума
  • *
  • Posts: 593
    • View Profile
Re: Макросы
« Reply #1 on: November 14, 2012, 08:41:54 AM »
чем в данном случае (кроме более страшного синтаксиса) макросы будут отличаться от теперешних подпрограмм и в обозримом будушем польз. функций?

идея кстати сделать #define (для задания псевдонимов и констант) у меня была.
если повесить константы на препроцессор, то кликер будет работать шустрее чем сейчас в этом плане.

Сергей

  • Активный участник
  • ***
  • Posts: 159
    • View Profile
Re: Макросы
« Reply #2 on: November 14, 2012, 08:07:06 PM »
Тем что они с аргументами, и обрабатываются препроцессором. Так же с помощью них можно и синтаксис расширить, ну например вот так:
Code: (clickermann) [Select]
#define ifn(\1) if(\1 = 0)
#define iff(\1) if(\1 = 0)
#define ift(\1) if(\1 = 1)

И да, быстродействие конечно же.
Отсутствую.

MaxP

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Re: Макросы
« Reply #3 on: September 04, 2014, 04:18:04 PM »
+1, но было бы приятнее видеть в виде переменных стандартные переменные clickermann, чем слеш-цифру