PHP InternalsTSRMLS_FETCH宏是如何工作的?
根据PHP 手册
在开发扩展时,包含“tsrm_ls 未定义”的构建错误或导致该结果的错误源于 TSRMLS 在当前范围内未定义的事实,要解决此问题,请使用适当的宏声明函数以接受 TSRMLS,如果有问题的函数不能更改,您必须在函数体内调用 TSRMLS_FETCH。
我了解声明函数以使用适当的宏接受 TSRMLS意味着使用TSRMLS_C、TSRMLS_D、TSRMLS_CC 和 TSRMLS_DC来定义或调用具有额外参数/参数的函数。
但是,如果相关函数的原型无法更改,则必须在函数体内调用 TSRMLS_FETCH使我有点困惑。如果我在PHP-SRC看起来既这里和这里的TSRMLS_FETCH 似乎是一个空的宏。
所以这给我留下了一个问题——它TSRMLS_FETCH是如何工作的?在编译时是否有其他东西填充这个宏?