FreeBasic
Главная
Вход
Регистрация
Четверг, 28.03.2024, 15:11Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Freebasic » Исходники » Preprocessor #define #macro (примеры использования макровыражений)
Preprocessor #define #macro
ntvgjhfnjДата: Понедельник, 12.12.2022, 10:43 | Сообщение # 1
Лейтенант
Группа: Проверенные
Сообщений: 59
Репутация: 1
Статус: Offline




Добавлено (12.12.2022, 11:44)
---------------------------------------------




polopok

Сообщение отредактировал ntvgjhfnj - Вторник, 13.12.2022, 07:13
 
haavДата: Понедельник, 12.12.2022, 19:33 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Репутация: 49
Статус: Offline
А куда пропал макрос цикла foreach. Сегодня видел днем , а к вечеру пропал smile

А вообще неплохие примеры. Иногда кстати макрос очень даже в тему. Я конечно не сильно увлекаюсь макросами , но иногда он реально напрашивается в коде.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
ntvgjhfnjДата: Понедельник, 12.12.2022, 21:40 | Сообщение # 3
Лейтенант
Группа: Проверенные
Сообщений: 59
Репутация: 1
Статус: Offline
Цитата haav ()
А куда пропал макрос цикла foreach. Сегодня видел днем , а к вечеру пропал

smile Да забыл вернуть из-за спойлеров, вернул.

Мне макросы очень помогают. Тут примеры не все, старался мало кода чтоб было, как бы часто используемые.


polopok
 
VitaminДата: Вторник, 13.12.2022, 03:59 | Сообщение # 4
Лейтенант
Группа: Пользователи
Сообщений: 55
Репутация: 4
Статус: Offline
ntvgjhfnj
Код
#define a<b<c (((a)<(b))And((b)<(c)))
Dim As Integer c = 1,cc = 0, ccc = 3
If c<cc<ccc Then ? "ASDFDS"

Код
Dim As Integer q = 1,w = 2, e = 3 ,r=5
#Define a/b<>d/c (((a),<>(b))And((d)<>(c)))
If q/w<>e/r  Then ? "ASDFDS"

не работает логика, если проверять другие значения (Compiler - Version 1.09.0)

а так работает: 
Код
#define SR(min,x,max) (min < x And x < max)
If SR(c,cc,ccc) Then ? "+" Else ? "-"



Сообщение отредактировал Vitamin - Вторник, 13.12.2022, 04:31
 
ntvgjhfnjДата: Вторник, 13.12.2022, 07:00 | Сообщение # 5
Лейтенант
Группа: Проверенные
Сообщений: 59
Репутация: 1
Статус: Offline
Опечатка, там запятую убрать надо.
Код
#Define a/b<>d/c (((a)<>(b))And((d)<>(c)))



Этот не проверял с другими значениями cool , лажанулся.
Код
#Define a<b<c (((a)<(b))And((b)<(c)))


polopok

Сообщение отредактировал ntvgjhfnj - Вторник, 13.12.2022, 07:13
 
VitaminДата: Вторник, 13.12.2022, 11:23 | Сообщение # 6
Лейтенант
Группа: Пользователи
Сообщений: 55
Репутация: 4
Статус: Offline
ntvgjhfnj, запятая не причем.
Посмотри внимательней, там должна быть истина когда по обеим сторонам разные, в общем не работает.
Жаль, что и этот "a<b<c" не работает, код получился бы более читабельным.
 
ntvgjhfnjДата: Вторник, 13.12.2022, 12:44 | Сообщение # 7
Лейтенант
Группа: Проверенные
Сообщений: 59
Репутация: 1
Статус: Offline
Пока предлагаю так:
Код

#define a_b_c (((a1)<(b1))And((b1)<(c1)))

Dim As Integer a1 = 1, b1 = 2, c1 = 3

If a_b_c Then ? "+" Else ? "-"

a1 = 6 : b1 = 2 : c1 = 3

If a_b_c Then ? "+" Else ? "-"

Sleep


polopok
 
VitaminДата: Вторник, 13.12.2022, 13:12 | Сообщение # 8
Лейтенант
Группа: Пользователи
Сообщений: 55
Репутация: 4
Статус: Offline
Только есть проблема, что макрос привязан к именам переменных - с другими уже не работает. Видимо "a_b_c" воспринимается как цельное имя, а не набор переменных.

Сообщение отредактировал Vitamin - Вторник, 13.12.2022, 18:17
 
ntvgjhfnjДата: Вторник, 13.12.2022, 13:35 | Сообщение # 9
Лейтенант
Группа: Проверенные
Сообщений: 59
Репутация: 1
Статус: Offline
Код

#Define def Print __FUNCTION__
Sub derinity()
    def
End Sub

derinity
Sleep


polopok
 
VitaminДата: Вторник, 13.12.2022, 18:23 | Сообщение # 10
Лейтенант
Группа: Пользователи
Сообщений: 55
Репутация: 4
Статус: Offline
Без указателей ForEeach тоже работает:
Код
#Macro ForEeach(_array, _member)
   For i As Integer = LBound(_array) To UBound(_array)
   #Define _member _array(i)
#EndMacro

Dim As Integer foo(9)
For i As Integer = 0 To 9
  foo(i) = i
Next

ForEeach(foo, bar)
   ? bar
Next
 
ntvgjhfnjДата: Среда, 14.12.2022, 04:50 | Сообщение # 11
Лейтенант
Группа: Проверенные
Сообщений: 59
Репутация: 1
Статус: Offline












Добавлено (14.12.2022, 05:44)
---------------------------------------------





polopok

Сообщение отредактировал ntvgjhfnj - Среда, 14.12.2022, 04:54
 
Форум » Freebasic » Исходники » Preprocessor #define #macro (примеры использования макровыражений)
  • Страница 1 из 1
  • 1
Поиск: