Ciekawe, co się właściwie stanie, jeśli zdefiniuję int array[0];w kodzie tablicę o zerowej długości ? GCC w ogóle nie narzeka.
Przykładowy program
#include <stdio.h>
int main() {
int arr[0];
return 0;
}
Wyjaśnienie
Właściwie próbuję dowiedzieć się, czy tablice o zerowej długości zainicjowane w ten sposób, zamiast wskazywać na zmienną długość w komentarzach Darhazera, są zoptymalizowane, czy nie.
Dzieje się tak, ponieważ muszę wypuścić jakiś kod na wolność, więc próbuję dowiedzieć się, czy muszę obsługiwać przypadki, w których SIZEzdefiniowano jako 0, co zdarza się w niektórych kodzie ze zdefiniowanym statycznieint array[SIZE];
Zaskoczyło mnie, że GCC nie narzeka, co doprowadziło do mojego pytania. Z otrzymanych odpowiedzi wynika, że brak ostrzeżenia jest w dużej mierze spowodowany obsługą starego kodu, który nie został zaktualizowany nową składnią [].
Ponieważ zastanawiałem się głównie nad błędem, oznaczam odpowiedź Lundina jako poprawną (odpowiedź Nawaza była pierwsza, ale nie była tak kompletna) - inni wskazywali jej faktyczne zastosowanie w konstrukcjach wyściełanych ogonem, chociaż istotne, nie jest dokładnie to, czego szukałem.