今天在看PHP5.3源码中zend_API.h中ZEND_INIT_MODULE_GLOBALS的定义时,发现了其有2个版本。一个为ZTS,另一个为非ZTS。这两个版本对于全局量的初始化函数——globals_ctor的使用是不一样的。非ZTS的版本中,globals_ctor只有一个参数,即“globals_ctor(&module_name##_globals)”;在在ZTS版本中,我看到了“(ts_allocate_ctor) globals_ctor”,而ts_allocate_ctor的定义为“typedef void (*ts_allocate_ctor)(void *, void ***);”,也就是说该操作将一个只有一个参数的函数指针强制转换为拥有两个参数的函数指针。顿时惊呆了,函数指针竟然可以这么转换。于是,开始到网上搜相关资料,发现没有讲得很全、很通的。所以,只能将它们都列下来,以备以后研究。今天在看PHP5.3源码中zend_API.h中ZEND_INIT_MODULE_GL