Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
prog Эксперт
Вступление в Клуб: 03.03.2008
|
Пн Сен 25, 2017 15:26  как экранировать символы квадратных скобок[] в макросе |
|
Полезность: Нет оценки
|
Доброго времени суток. Прошу помощи знающих людей.
Требуется создать макрос
Код: | pragma macro(m, 'моя_функция_с_двумя_параметрами(ссылка.[1].[2], [1])', substitute) |
первый параметр - это обращение к реквизитам ссылки: ссылка.[1].[2]
второй параметр [1] макроподставновка
компилятор воспринимает ссылка.[1].[2] не как реквизиты ссылки а как макроподстановки 1 и 2
как экранировать квадратные скобки в макросе для того чтобы компилятор не воспринимал выражение ".[1].[2]" как макроподстановки? |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Пн Сен 25, 2017 17:17   |
|
Полезность: Нет оценки
|
попробуй закавычить
типа того как я для шаблона дат делал
Код: | pragma macro (fd,'to_char([1], ''YYYYMMDD'') ' ,substitute); |
|
|
 |
prog Эксперт
Вступление в Клуб: 03.03.2008
|
Вт Сен 26, 2017 06:41   |
|
Полезность: Нет оценки
|
Что-то я видимо не понимаю. если закавычить выражение в макросе двумя одинарными кавычками
то на выходе, после отработки макроса получим
а нужно просто
|
|
 |
Alkov Профи
Вступление в Клуб: 23.09.2010
|
Вт Сен 26, 2017 06:57   |
|
Полезность: Нет оценки
|
ну присвой ссылка.[1].[2] в переменную,
а в макро вынеси уже переменную... |
|
 |
Эмиралька Эксперт
Вступление в Клуб: 09.11.2015
|
Вт Сен 26, 2017 08:22  Re: как экранировать символы квадратных скобок[] в макросе |
|
Полезность: 3
|
prog пишет: | как экранировать квадратные скобки в макросе для того чтобы компилятор не воспринимал выражение ".[1].[2]" как макроподстановки? |
Вот так:
Код: | pragma macro(m, 'моя_функция_с_двумя_параметрами(ссылка.[1].[2], {1})', substitute, false, '{}'); |
|
|
 |
prog Эксперт
Вступление в Клуб: 03.03.2008
|
Вт Сен 26, 2017 09:50   |
|
Полезность: Нет оценки
|
Спасибо большое, работает ). А можете объяснить как это работает
в доке есть синтаксис pragma macro и там меньше параметров
• MACRO(<имя макро переменной>,<текст макро-подстановки>
[, {usual substitute process execute} [,{false true quotes}] ] ) |
|
 |
Эмиралька Эксперт
Вступление в Клуб: 09.11.2015
|
Ср Сен 27, 2017 09:53   |
|
Полезность: Нет оценки
|
prog пишет: | Спасибо большое, работает ). А можете объяснить как это работает
в доке есть синтаксис pragma macro и там меньше параметров
• MACRO(<имя макро переменной>,<текст макро-подстановки>
[, {usual substitute process execute} [,{false true quotes}] ] ) |
Возможно, у вас устаревшая документация. В документации к версии ядра 7.3.7.4 - опция уже описана. |
|
 |
|