Как избежать $ в имени определения макроса m4?

Я пробовал следующий код

define(`$TITLE', `my title')
This is my $TITLE.

но текст остается неизменным, когда я вызываю его с помощью m4.

Похоже, это проблема с $. Должен ли я сбежать от этого?

Обновлено:

я нашел это

define(`$TITLE', `my title')
This is my indir(`$TITLE')

работают, но есть способ лучше?

Также такое имя макроса сослался как нестандартный, где я могу найти список с таким именем?

GNU M4 1.4.18 manual, section 5.1 Defining a macro

As a GNU extension, the first argument to define does not have to be a simple word. It can be any text string, even the empty string. A macro with a non-standard name cannot be invoked in the normal way, as the name is not recognized. It can only be referenced by the builtins indir (see Indir) and defn (see Defn).

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
393
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Здесь - это стандарт в. Он пишет:

Macro names shall consist of letters, digits, and underscores, where the first character is not a digit. Tokens not of this form shall not be treated as macros.

Я думаю, что использование defn было бы лучше (вместо indir), потому что стандарт POSIX не содержит indir (defn да), а defn должен работать с другой реализацией m4 (не только GNU).

Я думаю, в вашем случае было бы лучше, если бы ваши переменные начинались с подчеркивания (а не со знака доллара): _TITLE. Это правильное имя макроса и, возможно, не отображается в вашем тексте :)

Спасибо за ваш быстрый ответ. Я добавлю к макросам префикс _.

Firmin Martin 01.05.2018 20:39

Другие вопросы по теме