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函數返回值是怎麼返回的了其它類型返回值替換相似