Оберните __LINE__ в одинарные кавычки

Как мне обернуть макросы LINE и FILE в M4 для отображения "4" или "4". Я хочу, чтобы он был готов к выводу на консоль. Я использую C++ для этого.

1 ответ

Решение

Не уверен на 100%, если это то, что вам нужно, но это делает __file__ вывести имя файла в кавычках (на моем Mac OS):

define(`_m4__file__',defn(`__file__'))
pushdef(`__file__',`"_m4__file__"')

define(`_m4__line__',defn(`__line__'))
pushdef(`__line__',`"_m4__line__"')

define(`echo',`$*')
echo(__file__,__line__)
echo(__file__,__line__)

выход:

"m4.t","8"
"m4.t","9"

для одинарных кавычек используйте немного больше экранирования:

define(`_m4__file__',defn(`__file__'))
pushdef(`__file__',`''`_m4__file__'`'')

define(`_m4__line__',defn(`__line__'))
pushdef(`__line__',`''`_m4__line__'`'')

define(`echo',`$*')
echo(__file__,__line__)
echo(__file__,__line__)

выходы:

'm4.t','8'
'm4.t','9'
Другие вопросы по тегам