【发布时间】:2018-09-07 10:53:58
【问题描述】:
PHP Internals TSRMLS_FETCH 宏是如何工作的?
在开发扩展时,构建包含“tsrm_ls 未定义”的错误或导致该结果的错误源于 TSRMLS 在当前范围内未定义的事实,要解决此问题,请使用适当的宏声明函数以接受 TSRMLS,如果相关函数的原型无法更改,您必须在函数体内调用 TSRMLS_FETCH。
我了解使用适当的宏声明函数接受 TSRMLS 意味着使用 TSRMLS_C, TSRMLS_D, TSRMLS_CC, and TSRMLS_DC 定义或调用具有额外参数/参数的函数。
但是,如果相关函数的原型不能更改,则必须在函数体中调用 TSRMLS_FETCH 让我有点困惑。如果我同时查看 php-src here 和 here TSRMLS_FETCH 似乎是一个空宏。
所以这给我留下了一个问题——TSRMLS_FETCH 是如何工作的?在编译时还有其他东西填充这个宏吗?
【问题讨论】:
标签: php c macros php-internals