php扩展函数返回值RETURN_LONG(123) 宏替换过程如下: 替换之前: RETURN_LONG(123); ------------------------- 第1次替换: { RETVAL_LONG(123); return; } ------------------------- 第2次替换: { ZVAL_LONG(return_value, 123); return; } ------------------------- 第3次替换: { { zval *__return_value = (return_value); Z_LVAL_P(__return_value) = 123; Z_TYPE_P(__return_value) = IS_LONG; }; return; } ------------------------- 第4次替换: { { zval *__return_value = (return_value); Z_LVAL(*__return_value) = 123; Z_TYPE(*__return_value) = IS_LONG; }; return; } ------------------------- 第5次替换: { { zval *__return_value = (return_value); (*__return_value).value.lval = 123; (*__return_value).type = IS_LONG; }; return; } 替换完之后 RETURN_LONG(123);等价于第5次替换结果,返回值直接定义为第5次结果也是可以的,如果你不嫌麻烦的话。 看替换之后的结果 return_value 与函数名替换完之后里面的参数 return_value 就对应起来的,到这一步就明白的 php函数返回值是怎么返回的了
其它类型返回值替换类似