相关疑难解决方法(0)

VLA和操作数大小的副作用

我知道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;
}
Run Code Online (Sandbox Code Playgroud)

到底是怎么回事?

以防万一,这是在Coliru上用GCC 5.1编译的.

c side-effects sizeof variable-length-array

20
推荐指数
1
解决办法
326
查看次数

标签 统计

c ×1

side-effects ×1

sizeof ×1

variable-length-array ×1