Как избежать хэш-символа (#) в препроцессоре M4? - PullRequest
0 голосов
/ 14 февраля 2019

Как я могу избежать хеш-символа (#) в M4?

Мой макрос M4 такой:

define(`lnk',<a target="_blank" href="$1">$1</a>)dnl

И я использую его так:

lnk(http://www.example.com)

Чтобы произвести это:

<a target="_blank" href="http://www.example.com">http://www.example.com</a>

Моя проблема, когда я пытаюсь использовать это так:

lnk(http://www.example.com#anchor)

Тогда я получаю эту ошибку:

ERROR: end of file in argument list

И это из-за хеш-символа (#).Как я могу это исправить?Нужно ли экранировать хэш-символ в M4?

Я использую M4 для Windows (с Win 10 x64), загруженный из проекта gnuwin32

1 Ответ

0 голосов
/ 15 февраля 2019

Вы должны заключать в кавычки свои строки из-за нежелательных расширений.В вашем случае:

lnk(`http://www.example.com#anchor')

Но вы можете отключить или переопределить символы комментария.По умолчанию # в начале и новая строка в конце.Этот макрос changecom (см. здесь ).

changecom()dnl
define(`lnk',<a target="_blank" href="$1">$1</a>)dnl
lnk(http://www.example.com#anchor)
...