Оберните __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'