zoukankan      html  css  js  c++  java
  • php开发扩展之RETURN_LONG宏替换

    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函数返回值是怎么返回的了

    其它类型返回值替换类似
    ——在青春的路上,我们与你携手共进!
  • 相关阅读:
    架构之道(1)
    看板管理(1)
    交互原型图
    Sequence Diagram时序图
    安卓项目的「轻」架构
    安卓ButtomBar实现方法
    工具类BitMap 把网络URL图片转换成BitMap
    使用OkHttp上传图片到服务器
    BaseAdapter教程(2) BaseAdapter的notifyDataSetChanged动态刷新
    开发中时间变换问题汇总
  • 原文地址:https://www.cnblogs.com/sajanray/p/8204377.html
Copyright © 2011-2022 走看看