根据%bquote()宏功能文档,我不必标记未配对的"("用%将其分配给宏变量。
但是这段代码由于某种原因不起作用(因此变量var是空白的):
%let var=%bquote(();
%put &var;
为什么呢?如何修复代码以产生预期结果?
答案 0 :(得分:2)
您在执行时屏蔽,并在编译时进行屏蔽。
%BQUOTE
会屏蔽特殊字符at execution time:
%BQUOTE函数将通过解析宏变量引用或宏调用产生的所有括号和引号视为在执行时屏蔽的特殊字符。 (它不会在编译时屏蔽参数中的括号或引号。)
要在编译时将其屏蔽,因为您要在%let
中分配其值,必须使用%str
, em>要求括号前面加上%
。
%let var=%str(%();
%put &var;