我正在学习 digraph 和 trigraph,这是我无法理解的代码。(是的,我承认它非常丑陋。)
这段代码可以编译:
#define _(s) s%:%:s
main(_(_))
<%
__;
%>t
这段代码也可以编译:
#define _(s) s??=??=s
main(_(_))
<%
__;
%>
但是,以下两段代码都无法编译:
#define _(s) s%:??=s
main(_(_))
<%
__;
%>
和
#define _(s) s??=%:s
main(_(_))
<%
__;
%>
这确实让我感到困惑:由于前两段代码可以编译,我认为 digraph 和 trigraph 的扩展都发生在宏扩展之前。那么为什么有向图和三线图一起使用时不能编译呢?