PHP中部分宏应用
1、字符串复制
ZVAL_STRINGL(pzv, str, len, dup);str 和 len 分别为内存中保存的字符串地址和他的长度,dup之名该字符串是否需要被复制,值为1则将先申请一块新内存并复制该支付穿,然后把新内存的地址地址复制给pzv,值为0时则直接把str的地址赋值给zval。
2、字符串复制
在PHP中我们获取字符串长度,一般都会使用strlen()函数,着了说一个一般不会用到的方法。
如果想在某一位置截取该字符串或已经知道了该字符串的长度,那么可以使用宏ZAVAL_STRINGL (zval, string, length, duplicate),它显式的指定了字符串的长度,而不是使用strlen()函数。这个宏用该字符串长度作为参数。但它是二进制安全的,且速度也比ZVAL_STRING快,因为少了strlen。
3、资源类型
PHP中的资源类型的值其实就是一个整数,所以ZVAL_RESOURCE 和 ZVAL_LONG的工作差不多,只不过它会把zval的类型设置为IS_RESOURCE。所以ZVAL_RESOURCE 约等于ZVAL_LONG
4、其他的部分宏
ZVAL_BOOL(pzv, b): 将pzv所指的zval设置为IS-BOOL类型,值为b;
ZVAL_TRUE(pzv):将pzv所指的zval设置为IS_BOOL类型,值为true;
ZVAL_FALSE(pzv):将pzv所指的zval设置为IS_BOOL类型,值为false;
ZVAL_LONG(pzv, 1):将pzv所指的zval设置为IS_LONG类型,值为1;
ZVAL_DOUBLE(pzv, d):将pzv所指的zval设置为IS_DOUBLE类型,值为d;
PHP中部分宏应用的更多相关文章
- office中通过宏添加快捷键
把“Microsoft 公式 3.0”作为一个按钮放在 2013中的快速访问工具栏的方法 在使用office办公软件的过程中,因为有的人还在使用office2003版本,所以在使用高版本的office ...
- 26.怎样在Swift中定义宏?
Swift 中没有宏定义,苹果建议使用let 或者 get 属性来替代宏定义值.虽然没有#define,但我们仍然可以使用 #if 并配合编译的配置来完成条件编译.下面会列出Swift项目开发中的一些 ...
- IOS中利用宏将RGB值转换为UIColor(转)
可以在pch文件中定义宏,这样整个项目就都可以用了! #define UIColorFromRGBValue(rgbValue) [UIColor colorWithRed:((float)((rgb ...
- sass中 混合宏 VS 继承 VS 占位符 各自的使用时机和特点
初学者都常常纠结于这个问题“什么时候用混合宏,什么时候用继承,什么时候使用占位符?”其实他们各有各的优点与缺点,先来看看他们使用效果: a) Sass 中的混合宏使用 举例代码见 2-24 行 编译出 ...
- iOS 静态库中使用宏定义区分iPhone模拟器与真机---备用
问题描述 一般项目中,可以使用宏定义来判断模拟器还是真机,这无疑是有效的. #if TARGET_IPHONE_SIMULATOR #define SIMULATOR 1 #elif TARGET_O ...
- css编译工具Sass中混合宏,继承,占位符分别在什么时候使用
//SCSS中混合宏使用 @mixin mt($var){ margin-top: $var; } .block { @include mt(5px); span { display:block; @ ...
- VS2010中编写宏添加作者信息与函数注释
这里所说的宏是指通过一系列键盘组合键和可以插入自定义内容.下面介绍怎么编写一个自己的宏: 1.在Visual Studio 2010中按Alt+F11打开宏IDE: 2.打开后选择添加模块: 3.在弹 ...
- 如何在Excel中启用宏?
OFFICE2003版本中启用宏的方法: 1.首先打开EXCEL应用程序. 2.点击上方的"工具"--"宏"--"安全性" 3.在" ...
- C语言中的宏定义
目录(?)[-] 简单宏定义 带参数的宏 运算符 运算符 宏的通用属性 宏定义中圆括号 创建较长的宏 较长的宏中的逗号运算符 宏定义中的do-while循环do 空操作的定义 预定义宏 C语言中常用的 ...
- C中的宏
1. 简单宏定义 简单的宏定义有如下格式: [#define指令(简单的宏)] #define 标识符替换列表 替换列表是一系列的C语言记号,包括标识符.关键字.数.字符常量.字符串字面量.运算符和 ...
随机推荐
- springboot mvc自动配置(二)注册DispatcherServlet到ServletContext
所有文章 https://www.cnblogs.com/lay2017/p/11775787.html 正文 上一篇文章中,我们看到了DispatcherServlet和DispatcherServ ...
- Java 面向对象(四)继承
一.继承的概述(Inherited) 1.由来 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可. 其中,多个类可以称为 子类(派生类 ...
- Redis二进制安全概念
二进制安全是指,在传输数据时,保证二进制数据的信息安全,也就是不被篡改.破译等,如果被攻击,能够及时检测出来. 二进制安全包含了密码学的一些东西,比如加解密.签名等. 举个例子,你把数据1111000 ...
- Personalize Oracle Applications Home Page Browser Window Title
修改登录页 http://expertoracle.com/2016/03/10/personalizing-the-e-business-suite-r12-login-page/ STEP 2 : ...
- JavaScript基础概念与语法
学习了一些最基础的JavaScript语法: <!DOCTYPE html> <html lang="en"> <head> <meta ...
- python2,3区别
Python2 Python3 default charset ascii(can change) utf-8 print 可不加括号 必须加 range 有xrange()生成器 可转换为ran ...
- python Beautiful Soup 采集it books pdf,免费下载
http://www.allitebooks.org/ 是我见过最良心的网站,所有书籍免费下载 周末无聊,尝试采集此站所有Pdf书籍. 采用技术 python3.5 Beautiful soup 分享 ...
- 初级文件IO——IO过程、open、close、write、read、lseek、dup、dup2、errno、perror
先要回答的问题 文件IO指的是什么? 本文主要讲述如何调用Linux OS所提供的相关的OS API,实现文件的读写. 如何理解文件IO? IO就是input output的意思,文件io就是文件输入 ...
- JavaScript005,语法
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- JVM之Java运行时数据区(线程隔离区)
来源 JVM会在会在执行Java程序过程中把所管理的内存划分为若干区域,主要包括程序计数器(Program Counter Register),虚拟机栈(VM Stack),本地方法栈(Native ...