QMacros该如何处理在内容中出现起始和结束符?

这是一个很现实的问题,比如我们定义了宏的开始符号为 “[” ,宏的结束符为 “]”,那么如果我们要在模板中包含 “[” 和 “]” 该怎么办呢?

答案就是宏转义,我们可以定义宏 MacroStart , MacroEnd 分别对应下面的宏定义,然后入栈如下:

AMarcoMgr.Push('MacroStart','[');
AMacroMgr.Push('MacroEnd',']');

那么我们在模板中要输入 “[” 和 “]” 时就可以用下面的方式来代替:

[MacroStart] Now is [MacroEnd]

这样子,我们执行替换操作就会被替换为:

[ Now is ]

从而避免错误格式的解析而造成宏替换失败。

当然,上面的只是一个例子,你可以根据需要选择更好的解决方案。这一方案实际上和HTML的转义思路是一样的。

分享到: