En parcourant du code source, je suis tombé sur une fonction comme celle-ci:
void someFunction(char someArray[static 100])
{
// do something cool here
}
Avec quelques expérimentations, il semble que d'autres qualificatifs puissent y apparaître également:
void someFunction(char someArray[const])
{
// do something cool here
}
Il semble que les qualificatifs ne soient autorisés à l'intérieur de que [
]
lorsque le tableau est déclaré en tant que paramètre d'une fonction. Que font-ils? Pourquoi est-ce différent pour les paramètres de fonction?
la source
int foo(struct bar [static 1]);
plutôtint foo(struct bar *);
que comme signature pour les fonctions qui n'acceptent pas les pointeurs NULL. (Je sais que gcc a une autre syntaxe non standard pour marquer de telles fonctions afin que le compilateur puisse donner des avertissements ..)clang
maintenant avertit correctement lorsque vous essayez de passer un argument connu-NULL à une fonction avec une[static 1]
déclaration de paramètre.if (!someArray) { somecode... }
pourrait être supprimé