Автор Тема: Макросы  (Прочитано 3945 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Сергей

  • Активный участник
  • ***
  • Сообщений: 159
    • Просмотр профиля
Макросы
« : Ноябрь 13, 2012, 06:11:26 pm »
Макросы позволяют пользователю расширять синтаксис языка. Хоть они и сложны в реализации, их полезность очевидна.
Пример макроса:

Код: Clickermann
  1. #define echo print
Тут макросом просто создается псевдоним для функции print.

Код: Clickermann
  1. #define slclick(\1,\2,\3) lclick(\1,\2)\
  2. waitms(\3)\
  3. lclick(\1,\2)\
  4. waitms(\3)
  5.  
  6. slclick(1000,1000,30)
А это уже пример по-сложнее.

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

При запуске скрипта, препроцессором все это переводится в вид:
Код: Clickermann
  1. lclick(1000,1000)
  2. waitms(30)
  3. lclick(1000,1000)
  4. waitms(30)
И уже исполняется.

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

Johnny

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

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

Сергей

  • Активный участник
  • ***
  • Сообщений: 159
    • Просмотр профиля
Re: Макросы
« Ответ #2 : Ноябрь 14, 2012, 08:07:06 pm »
Тем что они с аргументами, и обрабатываются препроцессором. Так же с помощью них можно и синтаксис расширить, ну например вот так:
Код: Clickermann
  1. #define ifn(\1) if(\1 = 0)
  2. #define iff(\1) if(\1 = 0)
  3. #define ift(\1) if(\1 = 1)

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

MaxP

  • Зашел в гости
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Макросы
« Ответ #3 : Сентябрь 04, 2014, 04:18:04 pm »
+1, но было бы приятнее видеть в виде переменных стандартные переменные clickermann, чем слеш-цифру