php扩展ZVAL_STRING疑惑
编译通过
zval tmp;
ZVAL_STRING(&tmp, "hello");
编译失败
zval *tmp;
ZVAL_STRING(tmp, "hello")
最后调用的是这个宏,这里不是有
zval *__z = (z) 说明z传一个指针进来不就好了吗,为啥上面两种会有区别
#define ZVAL_NEW_STR(z, s) do { \
zval *__z = (z); \
zend_string *__s = (s); \
Z_STR_P(__z) = __s; \
Z_TYPE_INFO_P(__z) = IS_STRING_EX; \
} while (0)
php7跟php5 这两个函数是有差别的 确认下环境,另外,指针没有初始化就被使用了,语言层面的问题,感觉跟php没有多大关系了