%str函数在编译时起作用,宏变量解析是在执行时,但遇到了下面的困惑,请大神帮忙解惑!
code1:
%macro test(p);
%if 6 %str(&p) 6 %then %put 1;
%mend;
% test(eq);
结果:报错,不识别eq,也就是eq被屏蔽了。为什么编译起作用的%str可以屏蔽执行时才解析的eq?
code2:
%macro test(p);
%if 6 %str(&p) 6 %then %put 1;
%mend;
% test(=);
结果:可以执行,那么=是在执行时解析,str屏蔽没起作用。
code2是正常结果,但那怎样解释code1的结果?