【问题标题】:How to read this function in C?如何在 C 中读取此函数?
【发布时间】:2019-07-16 05:31:54
【问题描述】:

在阅读 PHP Zend Engine 内部时,我遇到了函数 zend_parse_parameters() 如下使用

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &number) != SUCCESS) { return; }

我对第一个参数感到困惑,因为它由两个用空格分隔的独立实体组成:ZEND_NUM_ARGS()TSRMLS_CC。我从来没有在 C 中看到过这样的事情。有人可以解释如何在 C 语法规则中理解这一点吗? zend_parse_parameters()的原型如下:

int zend_parse_parameters(int num_args TSRMLS_DC, char *type_spec, ...)

【问题讨论】:

  • TSRMLS_CC 是一个宏,可以扩展为以逗号开头的内容或什么都没有

标签: c php-internals


【解决方案1】:

从 C 的角度来看,ZEND_NUM_ARGSTSRMLS_CCTSRMLS_DC 只是宏。它们特定于 Zend 内部。本文解释了它们的用法以及它们将扩展的内容: http://blog.golemon.com/2006/06/what-heck-is-tsrmlscc-anyway.html

【讨论】:

    猜你喜欢
    • 2021-02-13
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    相关资源
    最近更新 更多