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函数返回值是怎么返回的了其它类型返回值替换相似