当前位置: 首页 > news >正文

南宁设计网站建设国外比较开放的浏览器

南宁设计网站建设,国外比较开放的浏览器,工作室网站域名,wordpress英文源码昨天和一朋友在邮件中讨论这样一个问题#xff1a;zend_internal_function#xff0c;zend_function#xff0c;zend_op_array这三种结构是可以相互转化的#xff0c;这三者的转化是如何进行的呢#xff1f; 以此文#xff0c;总结。在函数调用的执行代码中我们会看到这样…昨天和一朋友在邮件中讨论这样一个问题zend_internal_functionzend_functionzend_op_array这三种结构是可以相互转化的这三者的转化是如何进行的呢 以此文总结。在函数调用的执行代码中我们会看到这样一些强制转换EX(function_state).function (zend_function *) op_array;或者EG(active_op_array) (zend_op_array *) EX(function_state).function;这种不同结构间的强制转换是如何进行的呢首先我们来看zend_function的结构在Zend/zend_compile.h文件中其定义如下typedef union _zend_function {zend_uchar type; /* MUST be the first element of this struct! */struct {zend_uchar type; /* never used */char *function_name;zend_class_entry *scope;zend_uint fn_flags;union _zend_function *prototype;zend_uint num_args;zend_uint required_num_args;zend_arg_info *arg_info;zend_bool pass_rest_by_reference;unsigned char return_reference;} common;zend_op_array op_array;zend_internal_function internal_function;} zend_function;这是一个联合体我们来温习一下联合体的一些特性。 联合体的所有成员变量共享内存中的一块内存在某个时刻只能有一个成员使用这块内存 并且当使用某一个成员时其仅能按照它的类型和内存大小修改对应的内存空间。 我们来看看一个例子#include #include int main() {typedef union _utype{int i;char ch[2];} utype;utype a;a.i 10;a.ch[0] 1;a.ch[1] 1;printf(a.i %d a.ch%s,a.i, a.ch);getchar();return (EXIT_SUCCESS);}程序输出a.i 12593 a.ch11 当修改ch的值时它会依据自己的规则覆盖i字段对应的内存空间。 ’1′对应的ASCII码值是49二进制为00110001当ch字段的两个元素都为’1′时此时内存中存储的二进制为 00110001 00110001 转成十进制其值为12593。回过头来看zend_function的结构它也是一个联合体第一个字段为type 在common中第一个字段也为type并且其后面注释为/* Never used*/此处的type字段的作用就是为第一个字段的type留下内存空间。并且不让其它字段干扰了第一个字段。 我们再看zend_op_array的结构struct _zend_op_array {/* Common elements */zend_uchar type;char *function_name;zend_class_entry *scope;zend_uint fn_flags;union _zend_function *prototype;zend_uint num_args;zend_uint required_num_args;zend_arg_info *arg_info;zend_bool pass_rest_by_reference;unsigned char return_reference;/* END of common elements */zend_bool done_pass_two;....// 其它字段}这里的字段集和common的一样于是在将zend_function转化成zend_op_array时并不会产生影响这种转变是双向的。再看zend_internal_function的结构typedef struct _zend_internal_function {/* Common elements */zend_uchar type;char * function_name;zend_class_entry *scope;zend_uint fn_flags;union _zend_function *prototype;zend_uint num_args;zend_uint required_num_args;zend_arg_info *arg_info;zend_bool pass_rest_by_reference;unsigned char return_reference;/* END of common elements */void (*handler)(INTERNAL_FUNCTION_PARAMETERS);struct _zend_module_entry *module;} zend_internal_function;同样存在公共元素和common结构体一样我们可以将zend_function结构强制转化成zend_internal_function结构并且这种转变是双向的。总的来说zend_internal_functionzend_functionzend_op_array这三种结构在一定程序上存在公共的元素 于是这些元素以联合体的形式共享内存并且在执行过程中对于一个函数这三种结构对应的字段在值上都是一样的 于是可以在一些结构间发生完美的强制类型转换。 可以转换的列表如下zend_function可以与zend_op_array互换zend_function可以与zend_internal_function互换但是一个zend_op_array结构转换成zend_function是不能再次转变成zend_internal_function结构的反之亦然。其实zend_function就是一个混合的数据结构这种结构在一定程序上节省了内存空间。
http://www.zqtcl.cn/news/689566/

相关文章:

  • 哪个网站专做进口商品的网站备案好麻烦
  • 南京网站制作哪家专业接口网站开发
  • 网站正在建设中9797鲜花网页设计模板
  • wordpress怎么自动更新网站地图现在最流行的网站开发工具
  • 科技局网站查新怎么做vs网站制作教程
  • 网站开发流程文档东莞英文建站公司
  • 怎样建俄文网站wordpress国产主题推荐
  • 网站开发晋升空间 路径秦皇岛房管局官网
  • 中山网站建设sipocms做家电网站好
  • 石家庄建设局网站怎么打不开手机网站素材
  • 电影网站怎么做要多少钱中企动力 网站价格
  • 长沙企业如何建网站爱用建站
  • 在哪个网站上做实验仪器比较好农村住宅设计图集
  • 网站的源代码有什么用wordpress英文博客模板下载
  • 用html5做网站的优点国内家居行业网站开发
  • 临沂企业网站客流统计系统厂家
  • 深圳H5网站开发最新版app下载安装
  • 手机网站免费模板下载成都建设项目环境影响登记网站
  • 上海网站seo公司网站建设公司盈利分析
  • 影评网站怎么做培训总结心得体会
  • 做微站比较好的网站注册子公司流程及所需资料
  • 网站 psd科技公司网站首页
  • 宁波论坛建站模板单页面视频网站
  • 冷饮网站开发背景意义大鱼直播
  • 网站如何建设二级域名代理天津专业做网站
  • 相城区建设局网站如何申请公司邮箱账号
  • 中国空间站名字无锡网站优化
  • 怎么做自己淘宝优惠券网站专业的网站制作公司地址
  • php网页搜索引擎优化的核心本质
  • 在国外社交网站做产品推广wordpress自建站