我正在阅读《扩展和嵌入 PHP》一书,并在 C 语言中发现了这一行(以及相关结构):
typedef struct {
int sampleint;
char *samplestring;
} php_sample_globals;
int sample_globals_id;
(((php_sample_globals*)(*((void ***)tsrm_ls))[sample_globals_id - 1])->sampleint = 5
作者接着写道:
“如果您在解析该语句时遇到困难,请不要担心;它已很好地集成到 PHPAPI 中,以至于一些开发人员从不费心去了解它是如何工作的。”
我开始迷失*((void ***)tsrm_ls)
最佳答案
*((void ***)tsrm_ls)
将变量tsrm_ls
转换为指向指针的指针,然后获取指向的内容(因此最终得到一个指向指针的指针)
查看其余代码并假设它是正确的:
tsrm_ls
是一个指向 php_sample_globals
结构的指针数组的指针。
此代码查看该数组中的 sample_globals_id-1
索引,找到它指向的结构,然后将该结构的 sampleint
元素设置为 5
关于php - 这行代码在 PHP 的线程安全构建中做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7265783/