将 __LINE__ 包裹在单引号中

Wrap __LINE__ in to single quotes

如何在 M4 中包装 LINE 和 FILE 宏以显示“4”或“4”。我希望它准备好输出到控制台。我为此使用 C++。

不是 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'