VLAs und Nebeneffekt in sizeofs Operand
Ich weiß dassizeof
wertet seinen Operanden niemals aus, außer in dem speziellen Fall, in dem der Operand eine VLA ist. Oder ichhabe gedach Ich wusste
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;
}
Was ist los
Nur für den Fall, dass dies mit GCC 5.1 auf @ kompiliert wi Coliru.