php源码中的常见宏
先记录下php源码中常见到的一些宏,以备以后查看需要
Zend/zend_globals_macros.h:
# define CG(v) TSRMG(compiler_globals_id, zend_compiler_globals *, v)
Zend/zend_globals_macros.h:
# define EG(v) TSRMG(executor_globals_id, zend_executor_globals *, v)
main/php_globals.h:
# define PG(v) TSRMG(core_globals_id, php_core_globals *, v)
main/SAPI.h:
其中PG是一个宏,定义在php_globals.h中:
# define PG(v) TSRMG(core_globals_id, php_core_globals *, v)
而TSRMG也是一个宏,定义在TSRM.h中:
#define TSRMG(id, type, element) (((type) (*((void ***) tsrm_ls))[TSRM_UNSHUFFLE_RSRC_ID(id)])->element)
而TSRM_UNSHUFFLE_RSRC_ID也是一个宏,也定义在TSRM.h中:
#define TSRM_UNSHUFFLE_RSRC_ID(rsrc_id) ((rsrc_id)-1)
Zend/zend_globals_macros.h:
# define CG(v) TSRMG(compiler_globals_id, zend_compiler_globals *, v)
Zend/zend_globals_macros.h:
# define EG(v) TSRMG(executor_globals_id, zend_executor_globals *, v)
main/php_globals.h:
# define PG(v) TSRMG(core_globals_id, php_core_globals *, v)
main/SAPI.h:
# define SG(v) TSRMG(sapi_globals_id, sapi_globals_struct *, v)
SG宏主要用于获取SAPI层范围内的全局变量
其中PG是一个宏,定义在php_globals.h中:
# define PG(v) TSRMG(core_globals_id, php_core_globals *, v)
而TSRMG也是一个宏,定义在TSRM.h中:
#define TSRMG(id, type, element) (((type) (*((void ***) tsrm_ls))[TSRM_UNSHUFFLE_RSRC_ID(id)])->element)
而TSRM_UNSHUFFLE_RSRC_ID也是一个宏,也定义在TSRM.h中:
#define TSRM_UNSHUFFLE_RSRC_ID(rsrc_id) ((rsrc_id)-1)
posted on 2009-12-28 22:25 最简单的就是最好的 阅读(3553) 评论(0) 编辑 收藏 举报