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

    其它类型返回值替换类似
    ——在青春的路上,我们与你携手共进!
  • 相关阅读:
    日志
    JAVA字符串类
    JAVA包
    JAVA面向对象
    JAVA数组
    JAVA循环结构
    JAVA程序调试
    JAVA条件判断
    JAVA算术运算符
    JAVA数据类型
  • 原文地址:https://www.cnblogs.com/sajanray/p/8204377.html
Copyright © 2011-2022 走看看