阅读一些内核代码.
我无法理解这条线的含义
*(void **) &(int[2]){0,PAGE_SIZE};
Run Code Online (Sandbox Code Playgroud)
更重要的是,这意味着什么
{0,PAGE_SIZE}
Run Code Online (Sandbox Code Playgroud)
对我而言,它看起来不像是逗号的函数.
这段代码可能会发生什么?我不明白这里的间接性.
它是函数还是演员?支架部分是什么意思?似乎对我如此复杂,但绝对有意义.
(int[2]) { 0, PAGE_SIZE }
Run Code Online (Sandbox Code Playgroud)
是一个表达式(称为复合文字),其值为两个int
s 的数组.该数组的地址被采用,转换void **
和解除引用.
最终结果是将数组内容重新解释为指向void的指针.
请注意,您可以获取复合文字的地址,因为它们是左值.见例如.这个问题.