【发布时间】:2023-04-09 13:00:01
【问题描述】:
我知道sizeof 从不评估其操作数,除非在所述操作数是 VLA 的特定情况下。或者,我以为我知道。
void g(int n) {
printf("g(%d)\n", n);
}
int main(void) {
int i = 12;
char arr[i]; // VLA
(void)sizeof *(g(1), &arr); // Prints "g(1)"
(void)sizeof (g(2), arr); // Prints nothing
return 0;
}
发生了什么事?
以防万一,这是在 Coliru 上使用 GCC 5.1 编译的。
【问题讨论】:
标签: c sizeof side-effects variable-length-array