我的代码如下:
ZEND_FUNCTION(mysql_query1)
{
zval *args[1];
MAKE_STD_ZVAL(args[0]);
ZVAL_STRING(args[0], "hehe", 1);
zval *fname = NULL;
ZVAL_STRING(fname, "print", 0);
zval *retval = NULL;
if (call_user_function(EG(function_table), NULL, fname, retval, 1, args TSRMLS_CC) == SUCCESS) {
}
}
正如我测试的那样,它在执行call_user_function
时是核心的,我只是想调用它
在我的扩展中php的print()
函数,但为什么这会导致一个段?
任何想法?
答案 0 :(得分:1)
print
不是一个函数,而是一个语言结构。如果要打印zval,请使用zend_print_variable(zval)
。
或者您也可能对PHPWRITE(str, len)
和php_printf(format, ...)
感兴趣。
您的代码段错误与此无关:您没有分配fname
zval。