Przeglądając jakiś kod źródłowy natknąłem się na taką funkcję:
void someFunction(char someArray[static 100])
{
// do something cool here
}
Po pewnym eksperymentowaniu wydaje się, że mogą się tam również pojawić inne kwalifikatory:
void someFunction(char someArray[const])
{
// do something cool here
}
Wygląda na to, że kwalifikatory są dozwolone tylko wewnątrz elementu, [
]
gdy tablica jest zadeklarowana jako parametr funkcji. Co to robi? Dlaczego jest inaczej w przypadku parametrów funkcji?
int foo(struct bar [static 1]);
zamiastint foo(struct bar *);
jako podpisu dla funkcji, które nie akceptują wskaźników NULL. (Wiem, że gcc ma alternatywną niestandardową składnię do oznaczania takich funkcji, aby kompilator mógł dawać ostrzeżenia ...)