заставить m4 видеть макрос, когда макрос заканчивается тем же символом, что и строка, следующая за макросом - PullRequest
2 голосов
/ 25 июля 2011

Я работаю в системе, которая использует M4 для расширения некоторых файлов, но в некоторых случаях у меня возникают проблемы с расширением.Соглашение для определения / именования макросов (которое я бы предпочел не менять, если возможно): __<name>__ (т. Е. Двойные начальные и конечные подчеркивания.) Таким образом, это расширяется правильно:

define(`__ROOT__', `/home/mydir')
...
__ROOT__/bin

дает

/home/mydir/bin

но,

define(`__PREFIX__', `App_Mnemonic')
...
__PREFIX___some_service

должно дать:

App_Mnemonic_some_service

, но дает

__PREFIX___some_service

(то есть пропущено расширение)

Я предполагаю, что отсутствие пробела между последним подчеркиванием макроса и действительным подчеркиванием нижележащего текста сбивает с толку m4.Что я могу с этим поделать?Можно ли разделить макрос с помощью тихих фигурных скобок, например, таких как переменные окружения?

1 Ответ

1 голос
/ 25 июля 2011

На самом деле обманчиво просто, все, что мне нужно было сделать в базовом тексте, это изменить это:

__PREFIX___some_service

для этого:

__PREFIX__()_some_service

Возможно, это выглядит немного неуклюже, но этов конце концов, это макрос, и нет необходимости менять определение макроса.Так что это может остаться как есть:

define(`__PREFIX__', `App_Mnemonic')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...