什么都不做的宏(PHP源代码)
发布时间:2020-12-13 16:57:40 所属栏目:PHP教程 来源:网络整理
导读:在查看 PHP源代码时,我发现了这个宏: #define YYFILL(n) do {} while (0) 对我来说,看起来这没有任何作用.但是,YYFILL(n)在源代码中被多次调用.例如: if((YYLIMIT - YYCURSOR) 7) YYFILL(7) 这个宏的目的是什么? 此函数在PHP源代码中的位置以供参考:http
在查看
PHP源代码时,我发现了这个宏:
#define YYFILL(n) do {} while (0) 对我来说,看起来这没有任何作用.但是,YYFILL(n)在源代码中被多次调用.例如: if((YYLIMIT - YYCURSOR) < 7) YYFILL(7) 这个宏的目的是什么? 此函数在PHP源代码中的位置以供参考:https://github.com/php/php-src/blob/PHP-5.4/ext/standard/var_unserializer.c 解决方法
YYFILL是
re2c 使用的一个宏,它是一个接受正则表达式并生成C/C++源代码来解析它的程序. PHP在需要解析器的各个位置使用re2c.
如果YYFILL什么都不做,则解析器代码无法重新填充其输入缓冲区.这可能意味着原始输入缓冲区应该是完整且有效的. (如果你是从文件中读取内容,那么重新填充输入缓冲区就是你要做的事情.) do {} while(0)形式用于确保YYFILL后跟分号,如果在奇怪的标记序列中使用它,则不会解析为奇怪的构造. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |