上下文
正在读取一些内核代码。
问题
我无法理解这句话的意思
*(void **) &(int[2]){0,PAGE_SIZE};
更重要的是,这意味着什么
{0,PAGE_SIZE}
对我来说,它看起来不像是一个有逗号的函数。
这个代码可能是怎么回事?我不懂这里的间接引语。
是函数还是强制转换?支架部分是什么意思?对我来说似乎很复杂,但肯定有意义。
(int[2]) { 0, PAGE_SIZE }
是一个表达式(称为复合文字),其值是两个int
s的数组。此数组的地址被获取、强制转换为void **
并取消引用。
最终结果是将数组内容重新解释为指向void的指针。
请注意,可以获取复合文字的地址,因为它们是左值。参见这个问题。