Я работаю над системой, которая использует 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. Могу ли я что-нибудь с этим сделать? Могу ли я разграничить макрос молчаливыми фигурными скобками, например, как переменные среды?