如何理解3行c代码?

ccr*_*ccr 5 php c syntax php-internals

 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &flag) == FAILURE) {
  return;
 }
Run Code Online (Sandbox Code Playgroud)

特别是在ZEND_NUM_ARGS() TSRMLS_CC做什么?

xsc*_*ott 5

看起来TSRMLS_CC是一个可能会扩展为空的宏,或者它可能会扩展为带有逗号的额外参数:

http://blog.golemon.com/2006/06/what-heck-is-tsrmlscc-anyway.html


cod*_*ict 4

这篇Zend 文章说:

zend_parse_parameters() 块的大部分看起来几乎总是相同的。ZEND_NUM_ARGS()向 Zend 引擎提供有关要检索的参数的提示,TSRMLS_CC 的存在是为了确保线程安全