Durante la navigazione del codice sorgente mi sono imbattuto in una funzione come questa:
void someFunction(char someArray[static 100])
{
// do something cool here
}
Con un po 'di sperimentazione sembra che anche altri qualificatori possano apparire lì:
void someFunction(char someArray[const])
{
// do something cool here
}
Sembra che i qualificatori siano consentiti solo all'interno [
]
dell'array quando l'array viene dichiarato come parametro di una funzione. Cosa fanno questi? Perché è diverso per i parametri delle funzioni?
int foo(struct bar [static 1]);
invece cheint foo(struct bar *);
come firma per le funzioni che non accettano i puntatori NULL. (So che gcc ha una sintassi alternativa non standard per contrassegnare tali funzioni in modo che il compilatore possa dare avvisi ..)